一種結構性設計模式。特點是將復雜的子系統調用邏輯封裝到一個外觀類,從而使客戶端更容易與系統交互。
優點:
- 簡化了接口的調用;
- 降低了客戶端與子系統的耦合度;
- 封裝了子系統的邏輯。
缺點:
- 引入了額外的類,可能會增加不必要的復雜性;
- 不適合需要頻繁修改的系統。
- 外觀類承擔的職責過多
適合的場景:
- 家庭影院系統;
- 網絡服務端的連接;
- 數據庫的訪問。
//Car類,即外觀類 using System;public class Car { //車輛的各個部件private Engine engine = new Engine();//引擎private Door door = new Door();//車門private Light light = new Light();//車燈//啟動車輛public void Start(){ //啟動車門door.Open();//啟動引擎engine.StartEngine();//啟動車燈light.TurnOnLight();}//停止車輛public void Stop(){//關閉車燈light.TurnOffLight();//關閉引擎engine.StopEngine();//關閉車門door.Close();} }
//引擎 public class Engine {/// <summary>/// 啟動游戲引擎/// </summary>public void StartEngine(){Console.WriteLine("Game engine started.");}/// <summary>/// 停止游戲引擎/// </summary>public void StopEngine(){Console.WriteLine("Game engine stopped.");} }
//車門 public class Door {/// <summary>/// 開啟車門/// </summary>public void Open(){Console.WriteLine("Door is opening");}/// <summary>/// 關閉車門/// </summary>public void Close(){Console.WriteLine("Door is closing");} }
//車燈 public class Light {/// <summary>/// 開燈/// </summary>public void TurnOnLight(){Console.WriteLine("open car light");}/// <summary>/// 關燈/// </summary>public void TurnOffLight(){Console.WriteLine("close car light");} }
//客戶端 public class Client { //客戶端調用public static void Main(string[] args){ //創建車輛實例Car car = new Car();//啟動車輛car.Start();//停止車輛car.Stop();} }