本文共 1743 字,大约阅读时间需要 5 分钟。
外观模式:为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 外观模式又称为门面模式,它是一种对象结构型模式。外观模式是迪米特法则的一种具体实现,通过引入一个新的外观角色可以降低原有系统的复杂度,同时降低客户类与子系统的耦合度
在软件开发中,有时候为了完成一项较为复杂的功能,一个客户类需要和多个业务类交互,而这些需要交互的业务类经常会作为一个整体出现,由于涉及到的类比较多,导致使用时代码较为复杂,此时,特别需要一个类似服务员一样的角色,由它来负责和多个业务类进行交互,而客户类只需与该类交互。外观模式通过引入一个新的外观类(Facade)来实现该功能,外观类充当了软件系统中的“服务员”,它为多个业务类的调用提供了一个统一的入口,简化了类与类之间的交互。在外观模式中,那些需要交互的业务类被称为子系统(Subsystem)。如果没有外观类,那么每个客户类需要和多个子系统之间进行复杂的交互,系统的耦合度将很大,如图2(A)所示;而引入外观类之后,客户类只需要直接与外观类交互,客户类与子系统之间原有的复杂引用关系由外观类来实现,从而降低了系统的耦合度外观模式中,一个子系统的外部与其内部的通信通过一个统一的外观类进行,外观类将客户类与子系统的内部复杂性分隔开,使得客户类只需要与外观角色打交道,而不需要与子系统内部的很多对象打交道
////// 外观模式/// class Program{ static void Main(string[] args) { FacadeMode facadeMode=new FacadeMode(); facadeMode.methodA(); facadeMode.methodB(); facadeMode.methodC(); Console.ReadKey(); }} class FacadeMode { private SubSystemA subSystemA=new SubSystemA(); private SubSystemB subSystemB=new SubSystemB(); private SubSystemC subSystemC=new SubSystemC(); public void methodA() { subSystemA.MethodA(); } public void methodB() { subSystemB.MethodB(); } public void methodC() { subSystemC.MethodC(); }} class SubSystemA{ public void MethodA() { Console.WriteLine("methoda"); }}class SubSystemB{ public void MethodB() { Console.WriteLine("methodb"); }}class SubSystemC{ public void MethodC() { Console.WriteLine("methodc"); }}
转载地址:http://bdrxo.baihongyu.com/