外观模式定义:
为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
使用阶段:
1.在设计初期阶段
2.开发阶段
3.接受一个新的(或旧的)大型系统
在这些阶段的时期都是解决了内部子系统的复杂联系,让整个系统有一个“前台”就行。
在生活中的实例就是做饭吃,如果我们在家吃饭就需要买菜、洗菜、切菜、炒菜。但如果我们去饭店吃饭,我们只需要和服务员说我们吃什么就行了,服务员去后厨报菜名就行了,我们根本不需要去知道这个菜怎么做的就行,后厨只知道这是服务员要的菜,这就节省了很多的事情。
缺点
就是这个外观模式不符合开闭原则,如果出现新的子系统就需要修改外观层的代码
//外观类 class Facade { SubSystemOne one; SubSystemTwo two; SubSystemThree three; SubSystemFour four; public Facade() { one = new SubSystemOne(); two = new SubSystemTwo(); three = new SubSystemThree(); four = new SubSystemFour(); } public void MethodA() { Console.WriteLine(" \n方法组A()----"); one.MethodOne(); two.MethodTwo(); four.MethodFour(); } public void MethodB() { Console.WriteLine(" \n方法组B()----"); two.MethodTwo(); three.MethodThree(); } }
其余几个子系统和这个一样。
//子系统 class SubSystemFour { public void MethodFour() { Console.WriteLine(" 子系统方法四"); } }
//客户端 static void Main(string[] args) { Facade facade = new Facade(); facade.MethodA(); facade.MethodB(); Console.Read(); }
在我们平常的一些代码程序在编写时也有用到。外观模式又称为门面模式,它是一种对象结构型模式。外观模式是迪米特法则的一种具体实现,通过引入一个新的外观角色可以降低原有系统的复杂度,同时降低客户类与子系统的耦合度。