設計模式--適配器模式(Adapter)

什麼是適配器模式?java

     Adapter模式使的本來因爲接口不兼容而不能一塊兒工做的那些類能夠一塊兒工做。設計模式

     簡單的說,就是須要的東西就在面前,確不能使用,而短期又沒法改造它,因而咱們就想辦法適配它。
     適配器模式主要應用於但願複用一些現存的類,可是接口又與複用環境要求不一致的狀況。

代碼示例:
/// <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();
        }
    }

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

            Console.Read();
        }
    }



適用場景:
               一、系統須要使用現有的類,而這些類的接口不符合系統的接口。

    二、 想要創建一個能夠重用的類,用於與一些彼此之間沒有太大關聯的一些類,包括一些可能在未來引進的類一塊兒工做。ide

    三、 兩個類所作的事情相同或類似,可是具備不一樣接口的時候。spa

    四、 舊的系統開發的類已經實現了一些功能,可是客戶端卻只能以另外接口的形式訪問,但咱們不但願手動更改原有類的時候。.net

    五、 使用第三方組件,組件接口定義和本身定義的不一樣,不但願修改本身的接口,可是要使用第三方組件接口的功能設計

其餘設計模式:代理

設計模式--代理模式(Proxy)code

設計模式--裝飾模式(Decorator)對象

設計模式--迪米特法則(Lod/LKP)blog

設計模式--依賴倒轉原則

設計模式--開放/封閉原則(OCP)

設計模式--單一職責原則(SRP)

相關文章
相關標籤/搜索