-
外观模式UML图
-
定义
外观模式(也成为门面模式)要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。它提供一个高层次的接口,使得子系统更易于使用
-
使用场景
在真实的应用系统中,一个子系统可能由很多类组成。子系统的客户为了它们的需要,需要和子系统中的一些类进行交互。客户和子系统的类进行直接的交互会导 致客户端对象和子系统之间高度耦合。
-
代码举例说明
public class Facede {
//各种子系统的操作
private Light light;
private Door door;
private Window window;
public void goHome(){
light.on();
door.open();
window.open();
}
public void leftHome(){
light.off();
door.close();
window.close();
}
}
-
总结优缺点
- 优点
- 使用方便,使用外观模式客户端完全不需要知道子系统的实现过程;
- 降低客户端与子系统的耦合;
- 缺点
- 减少了可变性和灵活性;
- 在不引入抽象外观类的情况下,增加新的子系统可能需要修改外观类或客户端的源代码,违背了“开闭原则”;