大家應該都有去麥當勞點餐過的經驗,如果今天我想來個二號餐(雙層牛肉吉士堡),不可能走進去跟做薯條的人說我要一份薯條,再去漢堡區說我要一份漢堡幫我製作,最後去飲料區說我要大杯零卡可樂吧(應該會被店員趕出來XD)。
我們所有人點餐的窗口都是向櫃檯的服務員點餐,透過服務員將所需要的餐點指派給負責的人去做,最後再將所有餐點交給我們,轉換成物件導向的設計模式,就稱之為『Facade』!
為子系統中的一組介面定義一個統一介面。Facade模式定義了一個更高層的介面,使子系統更加容易使用。
(圖片來源:https://images.cnblogs.com/cnblogs_com/terrylee/Facade02.jpg)
class Program
{
static void Main(string[] args)
{
Clerk clerk = new Clerk();
clerk.MakeOrder();
}
}
class Clerk
{
private Hamburger_Dept hamburger_Dept = new Hamburger_Dept();
private Fries_Dept fries_Dept = new Fries_Dept();
private Nugget_Dept nugget_Dept = new Nugget_Dept();
public void MakeOrder()
{
hamburger_Dept.MakeHamburger();
fries_Dept.MakeFries();
nugget_Dept.MakeNugget();
Console.WriteLine("所有餐點製作完成");
}
}
class Hamburger_Dept
{
public void MakeHamburger()
{
Console.WriteLine("漢堡製作完成");
}
}
class Fries_Dept
{
public void MakeFries()
{
Console.WriteLine("薯條製作完成");
}
}
class Nugget_Dept
{
public void MakeNugget()
{
Console.WriteLine("雞塊製作完成");
}
}
-結果
Facade模式可以應用於以下幾種情況: