外观模式:新增一个类,这个类当作客户端和真正系统之间的桥梁,客户端通过类实习那对系统的调用。
是最小知道原则的具体实现,如果两个类必须通信,要借助第三方类。
相当于客户端和真正系统的通信员,负责他们之间交互。
A是未使用外观模式前,客户端和子系统交互
B是使用外观模式后,外观类当作客户端和子系统的桥梁,负责他们之间通信。
现在模拟喝茶动作,我们可以自己泡茶和去茶馆两个不同的选择,自己泡茶相当与没有使用外观模式,,去茶馆facade就相当于服务员使用到外观模式。
在未使用外观模式前:子系统ABC,对应
public class SubSystemA { public void MethodA() { System.out.println("准备茶具"); } } public class SubSystemB { public void MethodB() { System.out.println("准备开水"); } } public class SubSystemC { public void MethodC() { System.out.println("准备泡茶"); } }
public class Main { public static void main(String[] args) { SubSystemA a = new SubSystemA(); SubSystemB b = new SubSystemB(); SubSystemC c = new SubSystemC(); a.MethodA(); b.MethodB(); c.MethodC(); } }
我们看到,这样挺简单的,但忽略一个问题,当我们有多个客户端多个客户端都会有这段代码,但如果子系统方法改变怎么办,所有系统都需要改,这不符合我们的要求,使用外观模式就可以很好的解决这个问题。