《設計模式》 - 8. 外觀模式( Facade )

Cleve_baby發表於2018-07-06

Javascript設計模式 - 原文連結 

《設計模式》 - 8. 外觀模式( Facade ) :

語言 : C#

說明 :

  • 第一步 : 通過 Shape 介面 , 衍生出兩個派生類 正方形 (Square) 和 圓形 (Circle) , Square 和 Circle 兩個類裡都具有 繪製 (draw) 函式 .
  • 第二步 : 然後例項化 Maker 類 , 通過 maker 來呼叫 draw 函式繪製圖形 , 不用管裡面的具體實現細節 , 在較大的專案中 , 可以告訴新人介面作用 , 直接呼叫 , 而不必花時間講解實現邏輯 .

作用 :

  • 減少系統間的相互依賴 .
  • 增加靈活性 .
  • 避免低水平程式設計師帶來的風險 .

弊端 :

  • 繼承和重寫都不合適 , 修改很麻煩 .
  • 不符合開閉原則 .

圖示 :

這裡寫圖片描述

實現 :

對圖示中的內容稍微簡化了一些 , 大致思路是一樣的 .

  • 實現介面Shape , 重寫 draw方法 .
namespace DesignPattern
{
    //介面 Shape
    public interface Shape
    {
        void draw();
    }

    //正方形 Square
    public class Square : Shape
    {
        public void draw()
        {
            Console.WriteLine("畫正方形");
        }
    }

    //圓形 Circle
    public class Circle : Shape
    {
        public void draw()
        {
            Console.WriteLine("畫圓形");
        }
    }
  • 建立一個 Maker 外觀類 , 對外提供介面 , 對內隱藏實現細節 .
    //外觀類
    public class Maker
    {
        private Shape square;
        private Shape circle;

        public Maker()
        {
            square = new Square();
            circle = new Circle();
        }

        //畫正方形
        public void drawSquare()
        {
            square.draw();
        }

        //畫圓形
        public void drawCircle()
        {
            circle.draw();
        }
    }
  • 例項化外觀類 ( Maker ) , 呼叫 Maker裡的介面 .
    //外觀模式
    public class FacadePattern
    {
        static void Main()
        {
            //例項化 外觀類
            Maker maker = new Maker();

            //呼叫繪製方法
            maker.drawCircle();
            maker.drawSquare();

        }
    }
}

結果 :

這裡寫圖片描述


相關文章