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

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

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

      結(jié)合項目實例 回顧傳統(tǒng)設(shè)計模式(七)適配器模式(附外觀模式)

      2011-10-06 09:38  熬夜的蟲子  閱讀(732)  評論(0)    收藏  舉報

      記得以前章節(jié)談過的裝飾者模式,我們將對象包裝起來,賦予他們新的職責(zé)。而現(xiàn)在則是以不同目的,包裝某些對象:讓他們的接口看起來不像自己而像是別的東西。這樣就可以在設(shè)計中,將類的接口轉(zhuǎn)換成想要的接口,以便實現(xiàn)不同的接口。

      在項目中,適配器模式一般扮演者協(xié)調(diào)者的作用。

      1.客戶通過目標(biāo)接口調(diào)用適配器的方法對適配器發(fā)出請求

      2.適配器使用被適配者接口把請求轉(zhuǎn)換成被適配者的一個或多個調(diào)用接口

      3.客戶接受到調(diào)用的結(jié)果,但并未察覺這一切是適配器在起轉(zhuǎn)換作用

      另外還有一種特殊情況,萬一系統(tǒng)新舊并存,舊的部分期望舊的廠商接口,但我們卻已經(jīng)使用新廠商的接口編寫了這一部分,這個時候該怎么辦?這里使用適配器,那里卻使用未包裝的接口,這實在讓人感到混亂。這種情況需要創(chuàng)建一個雙向的適配器,支持兩邊的接口。

      關(guān)于這一節(jié)的項目 咱們就選銀行支付驅(qū)動

      /// <summary>
          
      /// 支付驅(qū)動
          
      /// </summary>
          public interface PayChannelDriver
          {
              void PayCallBack();

              string ReplaceHtmlCode(string order_no, string order_create_time,string currency, string extra, string goods_desc);
             
          }

          /// <summary>
          
      /// 銀行支付驅(qū)動
          
      /// </summary>
          public class CMBPayChannelDriver : PayChannelDriver
          {
              public void PayCallBack()
              {
                  Console.WriteLine("this is CMBPayChannelDriver");
              }

              public string ReplaceHtmlCode(string order_no, string order_create_time, string currency, string extra, string goods_desc)
              {
                  return "";
              }
          }

          /// <summary>
          
      /// 第三方支付驅(qū)動
          
      /// </summary>
          public class OtherPayChannelDriver 
          {
              public void OtherPayCallBack()
              {
                  Console.WriteLine("this is OtherPayChannelDriver");
              }

              public string GetReuqestUrl(string order_no, string order_create_time, string goods_desc)
              {
                  return "";
              }
          }

          /// <summary>
          
      /// 適配器
          
      /// </summary>
          public class PayChannelDriverAdapter : PayChannelDriver
          {
              OtherPayChannelDriver ocd;
              public PayChannelDriverAdapter(OtherPayChannelDriver otherpcd)
              {
                  this.ocd = otherpcd;
              }
              public void PayCallBack()
              {
                  ocd.OtherPayCallBack();
              }
              public string ReplaceHtmlCode(string order_no, string order_create_time,string currency, string extra, string goods_desc)
              {
                  return ocd.GetReuqestUrl(order_no, order_create_time,goods_desc);
              }
       
          }

       

      測試看看

                //普通銀行驅(qū)動
                 PayChannelDriver pd = new CMBPayChannelDriver();
                 //第三方支付不支持銀行驅(qū)動
                 OtherPayChannelDriver od = new OtherPayChannelDriver();
                 //適配器
                 PayChannelDriver apd = new PayChannelDriverAdapter(od);
                 //驅(qū)動支持適配器
                 pd.PayCallBack();
                 apd.PayCallBack();

       

      總結(jié):適配器模式將一個類的接口轉(zhuǎn)換成客戶期望的另一個接口。適配器讓原本接口不兼容的類可以合作無間。

      設(shè)計原則: 當(dāng)你正在設(shè)計一個系統(tǒng),不管是任何對象,你都要注意它所交互的類有哪些,并注意它和這些類是如何交互的。不要讓太多的類耦合在一起,免得修改系統(tǒng)中一部分,會影響到其他部分。如果許多類之間相互依賴,那么這個系統(tǒng)就會變成一個易碎的系統(tǒng),它需要花許多成本維護,也會因為太復(fù)雜而不容易被其他人了解。

      下面我們再看看外觀模式

      在適配器模式中一個適配器只能夠封裝一個類嗎?適配器模式的工作是將一個借口轉(zhuǎn)換成另一個。雖然大多數(shù)的適配器模式所采取的例子都是讓一個適配器包裝一個被適配者,但我們都知道這個世界其實復(fù)雜多了,需要讓一個適配器包裝多個被適配者。這就涉及到外觀模式。

      外觀模式提供一個統(tǒng)一的接口,用來訪問子系統(tǒng)中的一群接口。外觀定義了一個高層接口,讓子系統(tǒng)更容易使用。實例的話就不再贅述了。

      總得來說 外觀模式基于適配器模式讓接口變得更簡單。

      主站蜘蛛池模板: 国产乱码精品一区二三区| 亚洲国产午夜精品福利| 无码人妻精品一区二区三区下载| 亚洲精品www久久久久久| 国产亚洲欧美另类一区二区| 无码专区人妻系列日韩精品| 精品国产AV无码一区二区三区| 一本久久a久久精品综合| 精品乱码一区内射人妻无码| 久久精品夜色噜噜亚洲aa| 十八禁午夜福利免费网站| 亚洲国产在一区二区三区| 亚洲精品欧美综合二区| 亚洲一区二区三区自拍公司| 在线中文字幕国产一区| 久久av无码精品人妻出轨| 亚洲国产成人精品区综合| 卫辉市| 亚洲码亚洲码天堂码三区| 欧美综合自拍亚洲综合图| 亚洲情综合五月天| 亚洲精品动漫免费二区| 成人自拍短视频午夜福利| 潘金莲高清dvd碟片| 激情综合色综合啪啪五月| 亚洲精品久久久久久婷婷| 国产免费高清69式视频在线观看| 香蕉久久久久久久av网站| 亚洲欧美成人久久综合中文网| 日韩深夜福利视频在线观看| 国产成人综合在线观看不卡| 超碰伊人久久大香线蕉综合| 日韩午夜无码精品试看| 四虎国产精品永久在线下载| 亚洲日韩久热中文字幕| 人妻激情乱人伦视频| 亚洲精中文字幕二区三区| 免费无码黄十八禁网站| 成人自拍短视频午夜福利| 小嫩模无套内谢第一次| 国产精品不卡区一区二|