設計模式系列 - 外觀模式
阿新 • • 發佈:2018-12-24
外觀模式通過建立新的物件訪問介面,從而隱藏物件內部發複復雜性
介紹
外觀模式屬於結構型模式,通過定義的外觀器,從而簡化了具體物件的內部複雜性。這種模式通過在複雜系統和上層呼叫之間添加了一層,這一層對上提供簡單介面,對下執行復雜操作。
類圖描述
通過上圖我們可以發現,IShape 為行為介面,然後 Rectangle Square Circle 為具體的物件實體型別, ShapeMarker 為我們定義的外觀器,通過它,我們能間接訪問複雜物件。
程式碼實現
1、定義物件介面
public interface IShape
{
void Draw();
}
2、定義實體物件型別
public class Circle:IShape
{
public void Draw() => Console.WriteLine("Circle:Draw()");
}
public class Rectangle:IShape
{
public void Draw() => Console.WriteLine("Rectangle:Draw()");
}
public class Square:IShape
{
public void Draw() => Console.WriteLine("Square:Draw()");
}
3、定義外觀類
public class ShapeMarker { private IShape circle; private IShape rectangle; private IShape square; public ShapeMarker() { circle = new Circle(); rectangle = new Rectangle(); square = new Square(); } public void DrawCircle() => circle.Draw(); public void DrawRectangle() => rectangle.Draw(); public void DrawSquare() => square.Draw(); }
4、上層呼叫
class Program
{
static void Main(string[] args)
{
var shapeMarker = new ShapeMarker();
shapeMarker.DrawCircle();
shapeMarker.DrawRectangle();
shapeMarker.DrawSquare();
Console.ReadKey();
}
}
總結
外觀模式不符合開閉原則,如果外觀類執行的操作過於複雜的話,則不建議使用這種模式。