設(shè)計(jì)模式- 橋接模式

  • 為什么需要橋接模式?
    對(duì)象的關(guān)系是在編譯時(shí)就定義好了,所以無法再運(yùn)行時(shí)改變從父類繼承的實(shí)現(xiàn)。子類的實(shí)現(xiàn)與它的父類有非常緊密的依賴關(guān)系,以至于父類實(shí)現(xiàn)中的任何變化必然會(huì)導(dǎo)致子類發(fā)生變化,當(dāng)你需要復(fù)用子類時(shí),如果繼承下來的實(shí)現(xiàn)不適合解決新的問題,則父類必須重寫或被其他更適合的類替換。這種依賴關(guān)系限制了靈活性并最終限制了復(fù)用性。

  • 合成/聚合復(fù)用原則
    盡量使用合成/聚合,盡量不要使用類繼承。

    • 聚合:聚合表示一種弱的“擁有”關(guān)系,體現(xiàn)的是 A 對(duì)象可以包含 B 對(duì)象,但B 對(duì)象不是 A 對(duì)象的一部分。
    • 合成,強(qiáng)的‘擁有‘關(guān)系,體現(xiàn)了嚴(yán)格的部分和整體的關(guān)系,部分和整體的聲明周期是一樣。
  • 舉例

    • 問題:
      手機(jī)品牌:手機(jī)品牌 A,手機(jī)品牌 B。
      手機(jī)軟件:游戲 ,通訊錄。
      現(xiàn)在想要在兩個(gè)手機(jī)上分別安裝游戲和通訊錄。
    • 分析:手機(jī)品牌作為抽象類 A,軟件做為抽象類 B,手機(jī)品牌和手機(jī)軟件之間屬于聚合關(guān)系,手機(jī)品牌包含手機(jī)軟件,但是手機(jī)軟件并不屬于手機(jī)品牌。


      橋接.png
  • 橋接模式
    橋接模式,將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立的變化。
    抽象與實(shí)現(xiàn)分離是指抽象類和它的派生類用來實(shí)現(xiàn)自己的對(duì)象。讓手機(jī)既可以按照品牌來分類也可以按照功能來分分類。


    屏幕快照 2016-08-28 下午1.57.08.png
  • 代碼實(shí)現(xiàn)

abstract class Implementor
{
    public abstract void Operation();
}
class ConcreteImplentorA:Implementor
{
    public override void Operation()
    {
        Console.WriteLine("A 方法執(zhí)行");
    }
}
class ConcreteImplentorB:Implementor
{

    public override void Operation()
    {
        Console.WriteLine("B 方法執(zhí)行");
    }
}
class Abstraction
{
    protected Implementor implementor;
    public void SetImplementor(Implementor implementor)
    {
        this.implementor = implementor;
    }
    public virtual void Operation()
    {
        implementor.Operation();
    }
}
class RefinedAbstraction:Abstraction
{
    public override void Operation()
    {
        implementor.Operation();
    }
}
//客戶端實(shí)現(xiàn)
static void Main(string[] args){
    Abstraction ab = new Abstraction();
    ab.Operation();
    ab.SetImplementor(new ConcreteImplentorA);
    ab.Operation();
    ab.SetImplementor(new ConcreteImplentorB);
    ab.Operation();
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容