亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C# 設(shè)計(jì)模式系列教程-橋接模式

 更新時(shí)間:2016年06月01日 11:09:27   作者:Wang Juqiang  
橋接模式降低了沿著兩個(gè)或多個(gè)維度擴(kuò)展時(shí)的復(fù)雜度,防止類的過度膨脹,解除了兩個(gè)或多個(gè)維度之間的耦合,使它們沿著各自方向變化而不互相影響。

1. 概述

  將抽象部分(Abstraction)與實(shí)現(xiàn)部分(Implementor)分離,使它們可以獨(dú)立地變化。

2. 解決的問題  

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

3. 模式中的角色

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

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

  2.3 實(shí)現(xiàn)(Implementor):定義具體行為,具體特征的應(yīng)用接口。

  2.4 具體實(shí)現(xiàn)(ConcreteImplementor):實(shí)現(xiàn)Implementor。

4. 模式解讀

  4.1 實(shí)現(xiàn)要點(diǎn)

    Bridge模式使用“對(duì)象間的組合/聚合關(guān)系”解耦了抽象和實(shí)現(xiàn)之間固有的綁定關(guān)系,使得抽象和實(shí)現(xiàn)可以沿著各自的維度來變化

  4.2 橋接模式的類圖  

http://img.jbzj.com/file_images/article/201606/2016060111102425.png

  4.3 橋接模式的實(shí)現(xiàn)代碼

 /// <summary>
 /// 實(shí)現(xiàn)
 /// </summary>
 public abstract class Implementor
 {
  public abstract void Opration();
 }

 public class ConcreteImplementorA : Implementor
 {
  public override void Opration()
  {
   Console.WriteLine("具體實(shí)現(xiàn)A的方法執(zhí)行。");
  }
 }

 public class ConcreteImplementorB : Implementor
 {
  public override void Opration()
  {
   Console.WriteLine("具體實(shí)現(xiàn)B的方法執(zhí)行。");
  }
 }

 /// <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 客戶端的調(diào)用

 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();
  }

 }

  輸出結(jié)果:

  具體實(shí)現(xiàn)A的方法執(zhí)行。
  具體實(shí)現(xiàn)B的方法執(zhí)行。

5. 橋接模式是個(gè)比較復(fù)雜的模式,在對(duì)它總結(jié)之前,先看一個(gè)大家都非常熟悉的應(yīng)用:三層架構(gòu)  

http://img.jbzj.com/file_images/article/201606/2016060111102426.png

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

6. 模式總結(jié)

  6.1 優(yōu)點(diǎn)

    6.1.1 降低了沿著兩個(gè)或多個(gè)維度擴(kuò)展時(shí)的復(fù)雜度,防止類的過度膨脹。

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

  6.2 缺點(diǎn)

    還未發(fā)現(xiàn)

  6.3 適用場(chǎng)景

    6.3.1 當(dāng)一個(gè)對(duì)象有多個(gè)變化因素時(shí),可以考慮使用橋接模式,通過抽象這些變化因素,將依賴具體實(shí)現(xiàn)修改為依賴抽象。

    6.3.2 當(dāng)我們期望一個(gè)對(duì)象的多個(gè)變化因素可以動(dòng)態(tài)變化,而且不影響客戶端的程序使用時(shí)。

    6.3.3 如果使用繼承的實(shí)現(xiàn)方案,會(huì)導(dǎo)致產(chǎn)生很多子類,任何一個(gè)變化因素都需要產(chǎn)生多個(gè)類來完成,就要考慮橋接模式。

以上就是本文的全部?jī)?nèi)容,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#拼圖游戲編寫代碼(2)

    C#拼圖游戲編寫代碼(2)

    這篇文章主要為大家詳細(xì)介紹了C#拼圖游戲的編寫代碼下篇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • C#往線程里傳遞參數(shù)的方法小結(jié)

    C#往線程里傳遞參數(shù)的方法小結(jié)

    這篇文章主要介紹了C#往線程里傳參數(shù)的方法小結(jié)的相關(guān)資料,還給大家簡(jiǎn)單說明下傳參的兩種方式,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • 在C# WPF下自定義滾動(dòng)條ScrollViewer樣式的操作

    在C# WPF下自定義滾動(dòng)條ScrollViewer樣式的操作

    這篇文章主要介紹了在C# WPF下自定義滾動(dòng)條ScrollViewer樣式的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • C#中AutoResetEvent控制線程用法小結(jié)

    C#中AutoResetEvent控制線程用法小結(jié)

    本文主要來自一道面試題,由于之前對(duì)AutoResetEvent的概念比較模糊,面試題題目很簡(jiǎn)潔:兩個(gè)線程交替打印0~100的奇偶數(shù),你可以先動(dòng)手試試,我主要是嘗試在一個(gè)方法里面完成這個(gè)任務(wù),需要的朋友可以參考下
    2022-07-07
  • C#常用的字符串?dāng)U展方法匯總

    C#常用的字符串?dāng)U展方法匯總

    這篇文章主要介紹了C#常用的字符串?dāng)U展方法匯總,包括了常見的字符串操作與數(shù)據(jù)類型轉(zhuǎn)換等,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C# 對(duì)MongoDB 進(jìn)行增刪改查的簡(jiǎn)單操作實(shí)例

    C# 對(duì)MongoDB 進(jìn)行增刪改查的簡(jiǎn)單操作實(shí)例

    這篇文章介紹了C# 對(duì)MongoDB 進(jìn)行增刪改查的簡(jiǎn)單操作實(shí)例,有需要的朋友可以參考一下
    2013-09-09
  • 快速了解c# 常量

    快速了解c# 常量

    這篇文章主要介紹了c# 常量的相關(guān)資料,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C#中隱式運(yùn)行CMD命令行窗口的方法

    C#中隱式運(yùn)行CMD命令行窗口的方法

    下面介紹一種常用的在C#程序中調(diào)用CMD.exe程序,并且不顯示命令行窗口界面,來完成CMD中各種功能的簡(jiǎn)單方法。
    2011-04-04
  • C#將圖片和字節(jié)流互相轉(zhuǎn)換并顯示到頁(yè)面上

    C#將圖片和字節(jié)流互相轉(zhuǎn)換并顯示到頁(yè)面上

    本文主要介紹用C#實(shí)現(xiàn)圖片轉(zhuǎn)換成字節(jié)流,字節(jié)流轉(zhuǎn)換成圖片,并根據(jù)圖片路徑返回圖片的字節(jié)流,有需要的朋友可以參考下
    2015-08-08
  • C#集合之集(set)的用法

    C#集合之集(set)的用法

    這篇文章介紹了C#集合之集(set)的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04

最新評(píng)論