好久没写设计模式的blog了,这次重新回来填坑,先找一个最简单但是却最常用的设计模式来学习,外观模式。其实说是一个设计模式,其实我们在实际的编程中无时无刻不在用外观模式,可以说这个设计模式已经渗透到编程的各个方便,可能我们自己没感觉出来罢了。
一.外观模式的定义
先来看一下外观模式的定义:
外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层的接口,这个接口使得这一系列子系统更加容易使用。
简单解释一下,所谓外观模式,就是在我们设计系统的时候,将若干个子系统的功能整合到一个外观类中,通过这个外观类来调用子系统的功能,这样我们就可以简化客户端的调用,更重要的是可以将客户端和子系统解耦,当有子系统变化时,客户端不需要进行相应变动,只需要更改外观类即可。
下面是外观模式的UML图:
如果没有Facade类,那么Client就需要分别和ClassA,ClassB,ClassC建立联系,那样的话,UML图就没有现在看起来这么简单明了了,有了外观模式,Client就可以直接调用Facade类,而完全不用管ClassA,ClassB,ClassC里面是什么东东。
二.外观模式的例子
我们通过一个例子来学习一下外观模式,看一下有外观模式和没有外观模式有什么区别。正好快要毕业了,准备粗去旅游一趟,然而身为一个宅到没朋友的阿猿,怎么安排出行就成了关键的问题,我选择了两种方式安排我的行程: