bridge(橋接)模式用於將抽象與抽象的實現分離,使它們可以獨自變化。
適用於以下幾種情況:
不希望在抽象和它的實現部分之間有乙個固定的繫結關係,例如這種情況可能是因為,在程式執行時刻實現部分應可以被選擇或者切換。類的抽象以及它的實現都應該可以通過生成子類的方法加以擴充。這時bridge模式使你可以對不同的抽象介面和實現部分進行組合,並分別對它們進行擴充。對乙個抽象的實現部分的修改應對客戶不產生影響,即客戶的**不必重新編譯。想在多個物件間共享實現(可能使用引用計數),但同時要求客戶並不知道這一點。舉個類圖來看:
abstraction定義抽象類的介面。維護乙個指向implementor型別物件的指標。public abstract class person
public void setclothing()
public void settype(string type)
public string gettype()
public abstract void dress();
}refinedabstraction
擴充由abstraction定義的介面。
public class man extends person
public void dress()
}public class lady extends person
public void dress()
}implementor
定義實現類的介面,該介面不一定要與abstraction的介面完全一致。事實上這兩個介面可以完全不同。一般來講,implementor介面僅提供基本操作,而abstraction則定義了基於這些基本操作的較高層次的操作。
public abstract class clothing concreteimplementor
實現implementor介面並定義它的具體實現。
public class jacket extends clothing
}public class trouser extends clothing
}測試類public class test
}執行結果:
橋接模式(Bridge)
個人理解 橋接模式的精髓在於維護乙個抽象物件,並抽取這個物件的抽象部分。uml類圖 實現 public inte ce icomponent public class componenta icomponent public class componentb icomponent public ab...
Bridge橋接模式
include using namespace std bridge橋接模式。class base class son1 public base 這是基類具體方法實現。class son2 public base 如果此時有了新的模組加入,或者說要實現基類的另外一些 方法,我們在這裡只需要重新建造乙...
Bridge 橋接模式
物件和行為自由組合。當不同的物件具有多種可列舉的行為,且不同行為的物件可被描述為不同的具體的物件,不同的行為與物件結合將產生大量具有差異性具體物件,為了防止對這些具體物件的列舉,將差異性的行為與物件本身分離出來。比如遊戲裡面的英雄的裝備與動作 描述不同汽車的行為 汽 油 電等不同發動機的執行方式,見...