麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

設計模式(8)---橋接模式

2019-11-14 16:21:58
字體:
來源:轉載
供稿:網友

定義:

橋接模式:將抽象部分與它的實現部分分離,使它們都可以獨立地變化。

解釋:抽象與它的實現分離并不是說讓抽象類與其派生類分離,而是抽象類和它的派生類用來實現自己的對象。

 

UML類圖和基本代碼:

class PRogram    {        static void Main(string[] args)        {            Abstration ab = new RefinedAbstration();            ab.SetImplementor (new ConcreteImplementorA ());            ab.Operation();            ab.SetImplementor(new ConcreteImplementorB());            ab.Operation();            Console.Read();        }    }    abstract class Implementor    {        public abstract void Operation();    }    class ConcreteImplementorA : Implementor    {        public override void Operation()        {            Console.WriteLine("implement A action");        }    }    class ConcreteImplementorB : Implementor    {        public override void Operation()        {            Console.WriteLine("implement B action");        }    }    class Abstration    {        protected Implementor implementor;        public void SetImplementor(Implementor implementor)        {            this.implementor = implementor;        }        public virtual void Operation()        {            implementor.Operation();        }    }    class RefinedAbstration : Abstration    {        public override void Operation()        {            implementor.Operation();        }    }
View Code

 

在網上看到一個實例,感覺非常貼切,”拿來主義“參考學習。

具體是:現實生活中實現遙控器,遙控器中并不包含開機、關機、換臺等功能的實現,遙控器只是包含了電視機上的這些功能的引用,然后紅外線去找到電視機上對應功能的實現。

抽象類電視機及生成長虹、三星電視機:

public abstract class TV    {        public abstract void On();        public abstract void Off();        public abstract void TurnChannel();    }    public class ChangHong : TV    {        public override void On()        {            Console.WriteLine("長虹牌電視機已經打開了");        }        public override void Off()        {            Console.WriteLine("長虹牌電視機已經關掉了");        }        public override void TurnChannel()        {            Console.WriteLine("長虹牌電視機換頻道");        }    }    public class Samsung : TV    {        public override void On()        {            Console.WriteLine("三星牌電視機已經打開了");        }        public override void Off()        {            Console.WriteLine("三星牌電視機已經關掉了");        }        public override void TurnChannel()        {            Console.WriteLine("三星牌電視機換頻道");        }    }
View Code

 

 抽象類遙控器及實現:

public class RemoteControl    {        private TV implementor;        public TV Implementor        {            get { return implementor; }            set { implementor = value; }        }        public virtual void On()        {            implementor.On();        }        public virtual void Off()        {            implementor.Off();        }        public virtual void TurnChannel()        {            implementor.TurnChannel();        }    }    public class ConcreteRemote : RemoteControl    {            }
View Code

 

客戶端調用:

RemoteControl remoteControl = new ConcreteRemote();            remoteControl.Implementor = new ChangHong();            remoteControl.On();            remoteControl.Off();            remoteControl.TurnChannel();

 

優點:

抽象接口與實現解耦。

抽象和實現都可以獨立擴展,不會影響到對方。

缺點:

增加了系統的復雜度。

 

適用場景:

一個類存在兩個獨立變化的維度,且兩個維度都需要進行擴展。

需要跨越多個平臺的圖形和窗口系統。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品日韩欧美 | 欧美人一级淫片a免费播放 久久久久久久久91 国产99久久久久久免费看 | 精品亚洲在线 | 蜜桃视频日韩 | 亚洲人成在线播放网站 | 销魂美女一区二区 | 美女黄页网站免费进入 | 蜜桃视频在线免费观看 | 久久精品亚洲精品国产欧美kt∨ | 日本黄色免费观看视频 | a级毛片免费观看在线播放 日本aaa一级片 | 国产91丝袜在线熟 | 91伊人久久 | 国产一区二区午夜 | 国产99视频在线观看 | 亚洲免费永久 | 午夜精品毛片 | 三级国产三级在线 | 亚洲成人福利电影 | 欧美精品一区二区三区在线 | 精品午夜久久 | 露脸各种姿势啪啪的清纯美女 | 羞羞视频免费视频欧美 | 青青草免费观看 | 亚洲5区 | 久久久久久久免费视频 | 黄片一级毛片 | 欧美精品久久天天躁 | 欧美性受xxxxxx黑人xyx性爽 | 在线中文字幕亚洲 | 亚洲va久久久噜噜噜久牛牛影视 | 人成免费a级毛片 | 久久爽久久爽久久av东京爽 | 国产流白浆高潮在线观看 | 国产精品高潮99久久久久久久 | 一区二区久久久久草草 | 久久蜜桃精品一区二区三区综合网 | av电影观看| 亚洲视频观看 | 欧美一级特黄aaaaaaa什 | 亚洲国产高清一区 |