外观模式
类图:
常用的实现方式:
外观部件
public class FacadePartA { public FacadePartA(){ } public string Write(){ return "今天天气真不好!"; } }//end FacadePartA
public class FacadePartB { public FacadePartB(){ } /// /// <param name="message"></param> public void Read(string message){ Console.WriteLine(message); } }//end FacadePartB
外观
public class Facade { private readonly FacadePartA _facadePartA; private readonly FacadePartB _facadePartB; public Facade(){ _facadePartA=new FacadePartA(); _facadePartB=new FacadePartB(); } public void Show() { var message = _facadePartA.Write(); _facadePartB.Read(message); } }//end Facade
调用
static void Main(string[] args) { var facade = new Facade.Facade(); facade.Show(); Console.ReadLine(); }
使用场景:
外观模式主要用来根据不同的客户端,提供接口,方便客户调用和维护。常包装不同的对象或者细粒度服务,减少对象与对象之间的数据依赖,一般用在UI(Html或页面)层的次层。
优点
1.根据不同的客户端定制接口,比如移动,PC,微信,同样的服务根据需要可以提供不同的数据结构。
2.隐藏了部件功能实现的细节,客户端不用关心具体实现,具体实现由不同的部件去完成,然后包装就好。
缺点
1.外观类违背了设计6大原则,有利有弊
当然外观类可以根据需求去做抽象,增加其稳定性。