>>回傳《C#常用設計模式》
- 1. 簡介
- 2. 示例
1. 簡介
-
概述
- 為子系統中的一組介面提供一個一致的界面,此模式定義了一個高層介面,這個介面使得這一子系統更加容易使用
- 比如對同一種型別但不同廠家的設備:攝像頭、人臉識別設備、RFID讀卡器等
- 為子系統中的一組介面提供一個一致的界面,此模式定義了一個高層介面,這個介面使得這一子系統更加容易使用
-
模式中的角色
- 外觀類(Facade):外觀類知道哪些子系統類負責處理請求,將客戶的請求代理給恰當的子系統物件,
- 子系統類集合(SubSystem Classes):子系統類集合實作了子系統的功能,處理外觀類物件指派的任務,
-
類圖

2. 示例
namespace WindowsFormsApplication1
{
class Program
{
static void Main()
{
IDevice d1 = new FHCardReader();
d1.Open();
d1.Send("GpoHigh");
d1.Close();
IDevice d2 = new ImpinjCardReader();
d2.Open();
d2.Send("GpoHigh");
d2.Close();
}
}
//Facade
public interface IDevice
{
void Open();
void Close();
void Send(string msg);
}
//ConcreteFacadeA
public class FHCardReader : IDevice
{
FHReader reader = new FHReader();
FHGpo gpo = new FHGpo();
public void Open()
{
reader.Connect();
}
public void Close()
{
reader.DisConnect();
}
public void Send(string msg)
{
switch (msg)
{
case "Config": reader.ApplyConfig(); break;
case "GpoHigh": gpo.SetGpo(true); break;
case "GpoLow": gpo.SetGpo(false); break;
default:
break;
}
}
public void Send()
{
throw new NotImplementedException();
}
}
//ConcreteFacadeB
public class ImpinjCardReader : IDevice
{
ImpinjReader reader = new ImpinjReader();
public void Open()
{
reader.Connect();
}
public void Close()
{
reader.DisConnect();
}
public void Send(string msg)
{
switch (msg)
{
case "Config": reader.ApplyConfig(); break;
case "GpoHigh": reader.SetGpo(true); break;
case "GpoLow": reader.SetGpo(false); break;
default:
break;
}
}
}
//AnApi
public class ImpinjReader
{
public void Connect(){}
public void DisConnect() { }
public void ApplyConfig() { }
public void SetGpo(bool state) { }
//,,,,一堆用不上的功能
}
//B1Api
public class FHReader
{
public void Connect() { }
public void DisConnect() { }
public void ApplyConfig() { }
//,,,,一堆用不上的功能
}
//B2Api
public class FHGpo
{
public void SetGpo(bool state) { }
//,,,,一堆用不上的功能
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/260260.html
標籤:其他
上一篇:Decorator裝飾模式
下一篇:Flyweight享元模式
