外观模式是将一个或数个类的复杂的一切都隐藏在背后,只显露出一个干净美好的外观。外观简化了接口,也将客户从组件的子系统中解耦。外观和适配器都可以包装许多类,但是意图是不一样的,外观是为了简化接口,而适配器是为了将接口转换成不同的接口。
外观模式定义
提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。
外观模式的类图:
外观模式会减少软件的维护成本,但是也可能会导致更多的“包装”类被制造出来,可能会导致复杂度和开发时间的增加,并降低运行时的性能。
不要让太多的类耦合在一起,免得修改系统中一部分,会影响到其他部分。避免方法:就任何对象而言,在该对象的方法内,我们只应该调用属于以下范围的方法:
- 该对象本身
- 被当做方法的参数而传递进来的对象。
- 此方法所创建或实例化的任何对象。
- 对象的任何组件
外观设计模式只是提供更直接的操作,并未将原来的子系统阻隔起来。如果需要子系统类的更高层功能,还是可以使用原来的子系统。
我们举个煮饭的例子吧:
煮饭涉及三个工具:电饭煲、量水容器、量米容器。类图如下:
煮饭的过程要调用不同的方法,过程很繁琐,也很复杂,我们可以通过外观设计模式,将这一系列的动作写在一个外观方法中提供给用户调用。用户就可以不用管具体的细节了。
Demo代码已上传GitHub欢迎下载学习。
谢谢阅读!