Java 外观模式
2022-02-09 本文已影响0人
CodeDuan
一、定义
外观模式又称门面模式,是一种通过多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式,该模式对外有一个统一接口,外部不用关心子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。
主要角色:
外观角色:为多个子系统对外提供一个共同的接口。
子系统:实现系统的部分功能,客户可以通过外观角色访问它。
二、代码实现
举例:比如我每天下班回家都要开灯,打开电视,打开空调,但是这个过程我需要三步才能完成,所以我买了一个小爱同学,由小爱同学来帮我打开灯电视空调。其中灯,电视,空调就是指子系统,小爱同学指外观角色,接下来看代码;
灯(子系统)
public class Light {
public void open(){
System.out.println("打开了灯");
}
}
电视(子系统)
public class Tv {
public void open(){
System.out.println("打开了电视");
}
}
空调(子系统)
public class AirCondition {
public void open(){
System.out.println("打开了空调");
}
}
小爱同学(外观角色)
public class XiaoAi {
private Light light;
private Tv tv;
private AirCondition airCondition;
public void open(){
light = new Light();
light.open();
tv = new Tv();
tv.open();
airCondition = new AirCondition();
airCondition.open();
}
}
使用:
public static void main(String[] args) {
XiaoAi xiaoai = new XiaoAi();
xiaoai.open();
}
输出:
打开了灯
打开了电视
打开了空调
外观模式降低了子系统与客户端之间的耦合度,使子系统的变化不会影响到调用它的客户类,对客户屏蔽了子系统组件,减少了客户端处理的对象数目,缺点是不符合开闭原则,修改很麻烦。当一个复杂的系统中子系统很多时,即可通过外观模式设计一个简单的接口供客户端访问。