又名门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。外观模式是“迪米特法则”的典型应用

智能家电控制
子系统角色
- 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中设置不同的子系统管理。