东莞外贸网站推广,注册域名,舟山网站建设流程,摄影网站的市场可行性定义
又名门面模式#xff0c;是一种通过为多个复杂的子系统提供一个一致的接口#xff0c;而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口#xff0c;外部应用程序不用关心内部子系统的具体的细节#xff0c;这样会大大降低应用程序的复杂度#xff0c;…定义
又名门面模式是一种通过为多个复杂的子系统提供一个一致的接口而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口外部应用程序不用关心内部子系统的具体的细节这样会大大降低应用程序的复杂度提高了程序的可维护性。外观模式是“迪米特法则”的典型应用 结构
外观角色为多个子系统对外提供一个共同的接口。子系统角色实现系统的部分功能客户可以通过外观角色访问它。
案例
智能家电控制 子系统角色 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 Light {public void on(){System.out.println(开灯);}public void off(){System.out.println(关灯);}
} 外观角色 public class Controller {private Light light;private AirCondition airCondition;private TV tv;public Controller() {this.light new Light();this.airCondition new AirCondition();this.tv new TV();}public void control(String command){if (command.equals(打开)){light.on();tv.on();airCondition.on();}else if (command.equals(关闭)){light.off();tv.off();airCondition.off();}else{System.out.println(错误指令);}}
} 测试 public class Client {public static void main(String[] args) {Controller controller new Controller();controller.control(打开);System.out.println();controller.control(关闭);}
} 开灯 开电视 开空调 关灯 关电视 关空调 只是实现了简单的一键开关可以根据Controller中设置不同的子系统管理。
好处
降低了子系统与客户端之间的耦合度使得子系统的变化不会影响调用它的客户类。对客户屏蔽了子系统组件减少了客户处理的对象数目并使得子系统使用起来更加容易。
缺点
不符合开闭原则修改很麻烦
使用场景
对分层结构系统构建时使用外观模式定义子系统中每层的入口点可以简化子系统之间的依赖关系。当一个复杂系统的子系统很多时外观模式可以为系统设计一个简单的接口供外界访问。当客户端与多个子系统之间存在很大的联系时引入外观模式可将它们分离从而提高子系统的独立性和可移植性。