久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Adapter模式 設計模式學習筆記

 雪柳花明 2016-09-10

1. 概述

  將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以在一起工作,。

2. 解決的問題

  即Adapter模式使得原本由于接口不兼容而不能一起工作的那些類可以在一起工作,。

3. 模式中的角色

  3.1 目標接口(Target):客戶所期待的接口。目標可以是具體的或抽象的類,,也可以是接口,。

  3.2 需要適配的類(Adaptee):需要適配的類或適配者類。

  3.3 適配器(Adapter):通過包裝一個需要適配的對象,,把原接口轉換成目標接口,。  

4. 模式解讀

  注:在GoF的設計模式中,,對適配器模式講了兩種類型,,類適配器模式對象適配器模式,。由于類適配器模式通過多重繼承對一個接口與另一個接口進行匹配,,而C#,、java等語言都不支持多重繼承,,因而這里只是介紹對象適配器,。

  4.1 適配器模式的類圖

  

  4.2 適配器模式的代碼實現(xiàn)

復制代碼
    /// <summary>
    /// 定義客戶端期待的接口
    /// </summary>
    public class Target
    {
        /// <summary>
        /// 使用virtual修飾以便子類可以重寫
        /// </summary>
        public virtual void Request()
        {
            Console.WriteLine("This is a common request");
        }
    }

    /// <summary>
    /// 定義需要適配的類
    /// </summary>
    public class Adaptee
    {
        public void SpecificRequest()
        {
            Console.WriteLine("This is a special request.");
        }
    }

    /// <summary>
    /// 定義適配器
    /// </summary>
    public class Adapter:Target
    {
        // 建立一個私有的Adeptee對象
        private Adaptee adaptee = new Adaptee();

        /// <summary>
        /// 通過重寫,,表面上調用Request()方法,,變成了實際調用SpecificRequest()
        /// </summary>
        public override void Request()
        {
            adaptee.SpecificRequest();
        }
    }
復制代碼

  4.3 客戶端代碼

復制代碼
    class Program
    {
        static void Main(string[] args)
        {
            // 對客戶端來說,,調用的就是Target的Request()
            Target target = new Adapter();
            target.Request();

            Console.Read();
        }
    }
復制代碼

  運行結果

  

5. 模式總結

  5.1 優(yōu)點

    5.1.1 通過適配器,,客戶端可以調用同一接口,,因而對客戶端來說是透明的。這樣做更簡單,、更直接,、更緊湊。

    5.1.2 復用了現(xiàn)存的類,,解決了現(xiàn)存類和復用環(huán)境要求不一致的問題,。

    5.1.3 將目標類和適配者類解耦,通過引入一個適配器類重用現(xiàn)有的適配者類,,而無需修改原有代碼,。

    5.1.4 一個對象適配器可以把多個不同的適配者類適配到同一個目標,也就是說,,同一個適配器可以把適配者類和它的子類都適配到目標接口,。

  5.2 缺點

    對于對象適配器來說,更換適配器的實現(xiàn)過程比較復雜。

  5.3 適用場景

    5.3.1 系統(tǒng)需要使用現(xiàn)有的類,,而這些類的接口不符合系統(tǒng)的接口,。

    5.3.2 想要建立一個可以重用的類,用于與一些彼此之間沒有太大關聯(lián)的一些類,,包括一些可能在將來引進的類一起工作,。

    5.3.3 兩個類所做的事情相同或相似,但是具有不同接口的時候,。

    5.3.4 舊的系統(tǒng)開發(fā)的類已經實現(xiàn)了一些功能,,但是客戶端卻只能以另外接口的形式訪問,但我們不希望手動更改原有類的時候,。

    5.3.5 使用第三方組件,,組件接口定義和自己定義的不同,不希望修改自己的接口,,但是要使用第三方組件接口的功能,。

6. 適配器應用舉例

  6.1 使用過ADO.NET的開發(fā)人員應該都用過DataAdapter,它就是用作DataSet和數(shù)據源之間的適配器,。DataAdapter通過映射Fill和Update來提供這一適配器,。

  6.2 手機電源適配器

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多