国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C# 設計模式系列教程-橋接模式

2019-10-29 21:27:33
字體:
來源:轉載
供稿:網友
橋接模式降低了沿著兩個或多個維度擴展時的復雜度,防止類的過度膨脹,解除了兩個或多個維度之間的耦合,使它們沿著各自方向變化而不互相影響。
 

1. 概述

  將抽象部分(Abstraction)與實現部分(Implementor)分離,使它們可以獨立地變化。

2. 解決的問題  

  在軟件系統中,有些類型由于自身的邏輯,它具有兩個或多個維度的變化。為了解決這種多維度變化,又不引入復雜度,這就要使用Bridge模式。

3. 模式中的角色

  2.1 抽象(Abstraction):定義抽象接口,該接口中包含實現具體行為、具體特征的Implementor接口。

  2.2 提煉的抽象(RefinedAbstraction):繼承自Abstraction的子類,依舊是一個抽象的事物名。

  2.3 實現(Implementor):定義具體行為,具體特征的應用接口。

  2.4 具體實現(ConcreteImplementor):實現Implementor。

4. 模式解讀

  4.1 實現要點

    Bridge模式使用“對象間的組合/聚合關系”解耦了抽象和實現之間固有的綁定關系,使得抽象和實現可以沿著各自的維度來變化

  4.2 橋接模式的類圖  

C#,設計模式,橋接模式

  4.3 橋接模式的實現代碼

 /// <summary> /// 實現 /// </summary> public abstract class Implementor {  public abstract void Opration(); } public class ConcreteImplementorA : Implementor {  public override void Opration()  {   Console.WriteLine("具體實現A的方法執行。");  } } public class ConcreteImplementorB : Implementor {  public override void Opration()  {   Console.WriteLine("具體實現B的方法執行。");  } } /// <summary> /// 抽象 /// </summary> public abstract class Abstraction {  protected Implementor implementor;  public void SetImplementor(Implementor implementor)  {   this.implementor = implementor;  }  public abstract void Opration(); } /// <summary> /// 被提煉的抽象 /// </summary> public class RefinedAbstraction : Abstraction {  public override void Opration()  {   implementor.Opration();  } }

  4.4 客戶端的調用

 class Program {  static void Main(string[] args)  {   Abstraction abstraction = new RefinedAbstraction();   abstraction.SetImplementor(new ConcreteImplementorA());   abstraction.Opration();   abstraction.SetImplementor(new ConcreteImplementorB());   abstraction.Opration();   Console.Read();  } }

  輸出結果:

  具體實現A的方法執行。
  具體實現B的方法執行。

5. 橋接模式是個比較復雜的模式,在對它總結之前,先看一個大家都非常熟悉的應用:三層架構  

C#,設計模式,橋接模式

  解讀:三層架構中的業務邏輯層(LogicalTierInterface)橋接到了數據訪問層(DatabaseTierInterface),大家可以比較一下這個圖和上面橋接模式的圖是多么的一致。大家往往會在數據庫訪問這端做擴展,比如現在增加對MySql的支持;往往只對業務邏輯層的實現(LogicalImplement)做一些內部修改,而不是擴展一個新的實現。如果你的應用確實需要對業務邏輯層做一個擴展(比如NewLogicalImplement),那么這個三層架構對橋接模式的應用就算是比較完整的了。

6. 模式總結

  6.1 優點

    6.1.1 降低了沿著兩個或多個維度擴展時的復雜度,防止類的過度膨脹。

    6.1.2 解除了兩個或多個維度之間的耦合,使它們沿著各自方向變化而不互相影響

  6.2 缺點

    還未發現

  6.3 適用場景

    6.3.1 當一個對象有多個變化因素時,可以考慮使用橋接模式,通過抽象這些變化因素,將依賴具體實現修改為依賴抽象。

    6.3.2 當我們期望一個對象的多個變化因素可以動態變化,而且不影響客戶端的程序使用時。

    6.3.3 如果使用繼承的實現方案,會導致產生很多子類,任何一個變化因素都需要產生多個類來完成,就要考慮橋接模式。

以上就是本文的全部內容,希望能給大家一個參考,也希望大家多多支持VEVB武林網。



注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 卢氏县| 镇沅| 荣成市| 图片| 平谷区| 大连市| 巴林左旗| 枞阳县| 安阳市| 湖口县| 高邑县| 尤溪县| 永丰县| 兴城市| 邯郸县| 深州市| 香格里拉县| 钦州市| 石门县| 阿图什市| 加查县| 盐池县| 鄂伦春自治旗| 洛南县| 垫江县| 怀来县| 深州市| 平昌县| 江津市| 焉耆| 汉川市| 饶平县| 莱阳市| 梅河口市| 康乐县| 介休市| 阿尔山市| 简阳市| 铜川市| 嘉义县| 芒康县|