C# 設計形式系列教程-橋接形式。本站提示廣大學習愛好者:(C# 設計形式系列教程-橋接形式)文章只能為提供參考,不一定能成為您想要的結果。以下是C# 設計形式系列教程-橋接形式正文
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 橋接形式的類圖
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. 橋接形式是個比擬龐雜的形式,在對它總結之前,先看一個年夜家都異常熟習的運用:三層架構
解讀:三層架構中的營業邏輯層(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 假如應用繼續的完成計劃,會招致發生許多子類,任何一個變更身分都須要發生多個類來完成,就要斟酌橋接形式。
以上就是本文的全體內容,願望能給年夜家一個參考,也願望年夜家多多支撐。