設計模式-橋接模式

煮詩君發表於2020-09-03

前言

點選檢視:設計模式系列 

橋接模式(Bridge)

定義:將抽象部分與實現部分分離,使它們都可以獨立的變化。

理解:為啦解決一個物件變化而影響多個物件跟著變化,需要把具體實現物件抽象化,使降低物件和變化因素的耦合度,提高系統的可維護性和擴充套件性。

舉例:

手機系統的生態圈問題:

囉嗦點:眾所周知wp的生態圈相對與有些系統較差,各位需努力,諾基亞走下神壇,wp要走上神壇,頂一下哈。

wp/ios系統類:執行軟體,可承載本執行環境下的任何軟體,如果新增一個系統,軟體就要多做一個系統的版本

weixin/kuwo軟體類:開始執行軟體,如果新加一塊軟體,就要做眾多系統版本的。

實現:在iso和wp系統中執行,各種不同的軟體。

類圖:

 

軟體程式碼:

 //軟體
    public interface ISoftWare
    {
        void start();
    }

    //Kuwo
    public class Kuwo : ISoftWare
    {
        public void start()
        {
            Console.WriteLine("聽音樂,用酷我!");
        }
    }
    //WeiXin
    public class WeiXin : ISoftWare
    {
        public void start()
        {
            Console.WriteLine("讓你我的距離更近!");
        }
    }

作業系統程式碼

    //作業系統,跑軟體
    public abstract class System
    {
        public abstract void Run(ISoftWare software);
    }

    //Wp
    public class WinPhone : System
    {
        public override void Run(ISoftWare software)
        {
            Console.WriteLine("Winphone系統,給你想要的;");
            software.start();
        }
    }

    //Ios
    public class Ios : System
    {
        public override void Run(ISoftWare software)
        {
            Console.WriteLine("Ios系統,給你想不到的;");
            software.start();
        }
    }

客戶端程式碼

        public static void Main()
        {
            ISoftWare weixin = new WeiXin();
            ISoftWare kuwo = new Kuwo();
            //Wp系統
            System WpSys = new WinPhone();
            WpSys.Run(weixin);
            WpSys.Run(kuwo);
            //IOS系統
            System IosSys = new Ios();
            IosSys.Run(weixin);
            IosSys.Run(kuwo);

            Console.Read();
        }

橋接模式總結

一、橋接模式的參與者包括:

抽象類:定義類的介面

具體類:繼承抽象類,並實現擴充套件他

實現著:介面

具體實現著:介面的實現類

二、橋接模式的作用

系統,軟體猶如兩個層次,可避免兩個層次間建立高耦合的連結,同時也實現啦抽象和實現分離,使系統和軟體變化不會受到對方的影響,也更容易向客戶端程式隱藏實現的細節。

模式是所有模式中,最複雜的一種之一,要好好體會,好好理解,好好想想在具體專案中如何運用。

歡迎加入部落格左上方群,交流探討,設計模式,資料庫,c#.net,資料結構。

相關文章