iis7 网站 目录,海南注册公司多少钱,网站建设承诺,微营销工具文章目录 概述结构案例实现优缺点 概述
外观模式又名门面模式#xff0c;是一种通过为多个复杂的子系统提供一个一致的接口#xff0c;而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口#xff0c;外部应用程序不用关心内部子系统的具体的细节#xff0c;这… 文章目录 概述结构案例实现优缺点 概述
外观模式又名门面模式是一种通过为多个复杂的子系统提供一个一致的接口而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口外部应用程序不用关心内部子系统的具体的细节这样会大大降低应用程序的复杂度提高了程序的可维护性。
举个例子在没有只能家居的时候我们开灯开空调开电视等等一系列操作都需要我们一件一件来完成在有了智能家居以后在智慧生活设定指定的程序就可以实现一键开启指定的家居。 结构
外观Facade模式包含以下主要角色
外观Facade角色 为多个子系统对外提供一个共同的接口。子系统Sub System角色 实现系统的部分功能客户可以通过外观角色访问它。 案例实现
以我们熟知的智能家居为例
智能音箱就相当于我们的外观类而家居就相当于一个一个的系统只需要操作智能音箱就可以实现所有家电的开关。
子系统【电灯、电视、空调】
//电灯类
public class Light {public void on() {System.out.println(打开电灯....);}public void off() {System.out.println(关闭电灯....);}
}//电视类
public class TV {public void on() {System.out.println(打开电视....);}public void off() {System.out.println(关闭电视....);}
}//空调类
public class AirCondition {public void on() {System.out.println(打开空调....);}public void off() {System.out.println(关闭空调....);}
}外观类【智能音箱】
//智能音箱类
public class SmartAppliancesFacade {private Light light;private TV tv;private AirCondition airCondition;public SmartAppliancesFacade() {light new Light();tv new TV();airCondition new AirCondition();}public void say(String message) {if(message.contains(打开)) {on();} else if(message.contains(关闭)) {off();} else {System.out.println(我还听不懂你说的);}}//一键开电器private void on() {light.on();tv.on();airCondition.on();}//一键关电器private void off() {light.off();tv.off();airCondition.off();}
}测试
public class Client {public static void main(String[] args) {//创建外观对象SmartAppliancesFacade facade new SmartAppliancesFacade();//客户端直接与外观对象进行交互facade.say(打开);System.out.println();facade.say(关闭);}
}优缺点
优点
简化了调用过程无需了解深入子系统防止带来风险减少系统依赖、松散耦合外观模式讲客户端和子系统之间进行解耦更好的划分访问层次符合迪米特法则即最少知道原则。
缺点
增加子系统、扩展子系统行为容易引入风险不符合开闭原则如果需要新增或者修改子系统的功能可能需要修改外观类。