<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      說說設計模式~橋梁模式(Bridge)

      返回目錄

      在軟件系統中,某些類型由于自身的邏輯,它具有兩個或多個維度的變化,那么如何應對這種“多維度的變化”?如何利用面向對象的技術來使得該類型能夠輕松的沿著多個方向進行變化,而又不引入額外的復雜度?這就要使用Bridge模式。

      意圖

      【GOF95】在提出橋梁模式的時候指出,橋梁模式的用意是"將抽象化(Abstraction)與實現化(Implementation)脫耦,使得二者可以獨立地變化"。這句話有三個關鍵詞,也就是抽象化、實現化和脫耦。

      橋梁模式的成員

      抽象化

      存在于多個實體中的共同的概念性聯系,就是抽象化。作為一個過程,抽象化就是忽略一些信息,從而把不同的實體當做同樣的實體對待。

      實現化

      抽象化給出的具體實現,就是實現化,這里的實現化不是具體的實現,而是一個接口或者抽象類,它是對抽象化的擴展。

      脫耦

      所謂耦合,就是兩個實體的行為的某種強關聯。而將它們的強關聯去掉,就是耦合的解脫,或稱脫耦。在這里,脫耦是指將抽象化和實現化之間的耦合解脫開,或者說是將它們之間的強關聯改換成弱關聯。
      將兩個角色之間的繼承關系改為聚合關系,就是將它們之間的強關聯改換成為弱關聯。因此,橋梁模式中的所謂脫耦,就是指在一個軟件系統的抽象化和實現化之間使用組合/聚合關系而不是繼承關系,從而使兩者可以相對獨立地變化。這就是橋梁模式的用意。

      何時能用到它?

      某些類型由于自身的邏輯,它具有兩個或多個維度的變化,這時使用橋梁模式

      橋梁模式的結構圖

      橋梁模式實現說明

      Abstraction:抽象者,有對實現者的引用

      RefinedAbstraction:更新抽象者,對抽象者進行擴展,它可以添加或者修改抽象者的部分功能

      Implementor:實現者,它是一個接口或者功能類,它是對實現進行的一個抽象

      ConcreteImplementorA:具體實現者,是實現Implementor的一種方式

      橋梁模式的C#實現

      #region bridge pattern
          #region 抽象者
          // "Abstraction"
          class Abstraction
          {
              // Fields
              protected Implementor implementor;
              // Properties
              public Implementor Implementor
              {
                  set { implementor = value; }
              }
              // Methods
              virtual public void Operation()
              {
                  implementor.Operation();
              }
          }
      
          // "RefinedAbstraction"
          class RefinedAbstraction : Abstraction
          {
              // Methods
              override public void Operation()
              {
                  implementor.Operation();
              }
          }
          #endregion
      
          #region 實現者
          // "Implementor"
          abstract class Implementor
          {
              // Methods
              abstract public void Operation();
          }
          // "ConcreteImplementorA"
          class ConcreteImplementorA : Implementor
          {
              // Methods
              override public void Operation()
              {
                  Console.WriteLine("ConcreteImplementorA Operation");
              }
          }
          // "ConcreteImplementorB"
          class ConcreteImplementorB : Implementor
          {
              // Methods
              override public void Operation()
              {
                  Console.WriteLine("ConcreteImplementorB Operation");
              }
          }
          #endregion
          #endregion

      調用代碼

                  Abstraction abstraction = new RefinedAbstraction();
                  // Set implementation and call
                  abstraction.Implementor = new ConcreteImplementorA();
                  abstraction.Operation();
                  // Change implemention and call
                  abstraction.Implementor = new ConcreteImplementorB();
                  abstraction.Operation();

      結果截圖

      返回目錄

      posted @ 2014-09-05 16:10  張占嶺  閱讀(1547)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 激情综合网激情五月伊人| 性欧美牲交在线视频| 国产精品久久久久久久9999| 国产精品午夜福利资源| 国产成人a∨激情视频厨房| 国产精品99久久免费| 无码AV无码免费一区二区| 日韩av一区二区三区不卡| 午夜精品福利亚洲国产| 激情在线网| 一道本AV免费不卡播放| 午夜福利视频| 午夜福利国产区在线观看| 亚洲区综合中文字幕日日| 双乳奶水饱满少妇呻吟免费看| 办公室强奷漂亮少妇同事| 精品综合一区二区三区四区| 亚洲va久久久噜噜噜久久狠狠| 国产午夜大地久久| 亚洲乱码一二三四区| 亚州中文字幕一区二区| 日本熟妇大乳| 亚洲av熟女国产一二三| 国产亚洲精品成人av在线| 成人AV无码一区二区三区| 岛国中文字幕一区二区| 2021亚洲va在线va天堂va国产| 国产稚嫩高中生呻吟激情在线视频| 波多野结衣的av一区二区三区 | 亚洲欧美人成电影在线观看 | 色二av手机版在线| 国产午夜精品福利免费看| 国产SUV精品一区二区6| 日韩av片无码一区二区不卡| 日韩中文字幕高清有码| 亚洲人亚洲人成电影网站色| 男女裸体影院高潮| 国产精品成人无码久久久| 久久精品国产亚洲av麻豆不卡 | 国产精品成人久久电影| 欧美人与动zozo在线播放|