設計模式-橋接模式


前言

點擊查看:設計模式系列 

橋接模式(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,數據結構。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM