程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 設計形式系列教程-橋接形式

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

編輯:C#入門知識

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 橋接形式的類圖  

https://www.aspphp.online/bianchen/UploadFiles_4619/201707/2017072810422818.png

  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. 橋接形式是個比擬龐雜的形式,在對它總結之前,先看一個年夜家都異常熟習的運用:三層架構  

https://www.aspphp.online/bianchen/UploadFiles_4619/201707/2017072810422838.png

  解讀:三層架構中的營業邏輯層(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 假如應用繼續的完成計劃,會招致發生許多子類,任何一個變更身分都須要發生多個類來完成,就要斟酌橋接形式。

以上就是本文的全體內容,願望能給年夜家一個參考,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved