外观模式思维导图
设计模式-外观模式
1、定义
定义一个高层接口,使子系统更易使用,提供一致界面。(简化用户与子系统的交互。)
2、分类
分类:结构型模式。
3、优点&缺点
优点:
使客户和子系统的类无耦合,子系统使用更方便;
只提供更简洁界面,不影响用户直接使用子系统的类;
子系统中任何类的方法的改变,不影响外观类。
缺点:
不满足开闭原则;(在不引入抽象外观类时,增加新的子系统可能会改变外观类代码。)
不能很好限制用户使用子系统。
遵循迪米特法则:一个类对自己依赖的类知道的越少越好。即,对于被依赖的类,无论逻辑多么复杂,尽量将逻辑封装在类的内部。
4、适用场景
对于复杂子系统,需为用户提供简单交互操作;
不希望客户与子系统的类耦合,提高子系统独立性和可移植性;
当整个系统需要构建一个层次结构的子系统,不希望子系统相互直接交互。
5、UML类图
角色:
子系统 Subsystem:若干类的集合,这些类的实例协同为用户提供所需功能。
外观 Facade:包含子系统全部或部分类的实例引用。
6、代码实现
//step1. 子系统 Subsystem:若干类的集合,这些类的实例协同为用户提供所需功能
class ClassA {
public void methodA() {
System.out.println("method A");
}
}
class ClassB {
public void methodB() {
System.out.println("method B");
}
}
//step2. 外观 Facade:包含子系统全部或部分类的实例引用
class Facade {
private ClassA classA;
private ClassB classB;
public Facade() {
classA = new ClassA();
classB = new ClassB();
}
public void method() {
classA.methodA();
classB.methodB();
}
}
//step3. Demo
public class TestAwen {
public static void main(String[] args) {
Facade facade = new Facade();
facade.method();
}
}
运行结果截图
来源:CSDN
作者:程序员阿文
链接:https://blog.csdn.net/awen6666/article/details/103581142