1. 程式人生 > >設計模式—橋接模式

設計模式—橋接模式

可能 定義 優點 代碼實現 等等 復用 使用 擴展 就會

用的並不是特別多,但是熟悉這個模式對於理解面向對象的設計原則,包括“開-閉”原則以及組合/聚合復用原則都很有幫助。

理解好這兩個原則,有助於形成正確的設計思想和培養良好的設計風格。

如果子類的擴展有兩個維度,這時候想解耦和來解決排列組合問題。用組合代替繼承。

比如說就禮物這東西而言,可大致抽象分為兩類,一種是溫暖型的,一種是狂野型的,在禮物的實現上可具體為花或者鉆戒或者大炮等等;

在抽象這個維度上可能會擴展,在具體實現上也會擴展,就會形成各式各樣的排列組合:溫暖的***,狂野的***,實用的***。

如果這個時候使用繼承那麽繼承體系將會非常臃腫。

現在采用橋梁模式來實現,抽象部分和實現部分分離開,可以相互獨立的變化。從而大大提高了系統的可擴展性。

代碼實現:

1.禮物抽象類

package com.bjsxt.dp.bridge;

public class Gift {
    protected GiftImpl impl;
}

在禮物抽象類中聚合了禮物的實現類,而不在使用繼承的方式。

2.禮物實現類

package com.bjsxt.dp.bridge;

public class GiftImpl {

}

3.繼承禮物抽象類的WarmGift

package com.bjsxt.dp.bridge;

public class WarmGift extends Gift{
    public WarmGift(GiftImpl impl) {
        
this.impl = impl; } }

4.繼承禮物抽象類的WildGift

package com.bjsxt.dp.bridge;

public class WildGift extends Gift {

    public WildGift(Ring ring) {
        this.impl = impl;
    }
    
}

5.繼承禮物實現類的Flower

package com.bjsxt.dp.bridge;

public class Flower extends GiftImpl {

}

6.繼承禮物實現類的Ring

package com.bjsxt.dp.bridge;

public class Ring extends GiftImpl { }

橋梁模式的優點:

橋梁模式分離了抽象部分和實現部分,從而極大地提供了系統的靈活性。

讓抽象部分和實現部分獨立出來,分別定義接口,這有助於對系統進行分層,從而產生更好的結構化的系統。

設計模式—橋接模式