package cn.bunny.pattern10;

public class Facade {
    public static void main(String[] args) {
        DeviceFacade deviceFacade = new DeviceFacade();
        // 查看
        deviceFacade.on();

        // 看完关闭
        deviceFacade.off();
    }

    // 子系统-手机
    static class SubSystemIPhone {
        public void on() {
            System.out.println("打开手机。。。");
        }

        public void off() {
            System.out.println("关闭手机。。。");
        }
    }

    // 子系统-天气
    static class SubSystemWeather {
        public void on() {
            System.out.println("打开天气。。。");
        }

        public void off() {
            System.out.println("关闭天气。。。");
        }
    }

    // 门面
    static class DeviceFacade {
        // 也可以作为参数传递，如果没有别的实现类，直接在内部初始化会使使用者更简单
        SubSystemIPhone subSystemIPhone = new SubSystemIPhone();
        SubSystemWeather subSystemWeather = new SubSystemWeather();

        public void on() {
            subSystemIPhone.on();
            subSystemWeather.on();
        }

        public void off() {
            subSystemWeather.off();
            subSystemIPhone.off();
        }
    }
}
