10.外观模式(过程模式)

外观模式为子系统种的一组接口提供了一个一致的界面,此模式定义了一个高层接口使得这一子系统更加容易使用

 

 

 外观模式就是解决多个复杂接口带来的操作问题,起到简化用户操作使用的效果

/**
 * @author wuyimin
 * @create 2021-07-27 10:26
 * @description 使用饿汉式创建单例
 */
public class TV {
    private TV(){}
    private final static TV instance=new TV();
    public static TV getInstance(){
        return instance;
    }
    public void on(){
        System.out.println("打开电视");
    }
    public void play(){
        System.out.println("观看电视");
    }
    public void off(){
        System.out.println("关闭电视");
    }
}
/**
 * @author wuyimin
 * @create 2021-07-27 10:30
 * @description
 */
public class Food {
    private Food(){};
    private final static Food instance=new Food();
    public static Food getInstance(){
        return instance;
    }
    public void prepare(){
        System.out.println("点外卖");
    }
    public void eat(){
        System.out.println("吃外卖");
    }
    public void discard(){
        System.out.println("丢垃圾");
    }
}
/**
 * @author wuyimin
 * @create 2021-07-27 10:33
 * @description
 */
public class Girlfriend {
    private Girlfriend(){}
    private static final Girlfriend instance=new Girlfriend();
    public static Girlfriend getInstance(){
        return instance;
    }
    public void ask(){
        System.out.println("叫女朋友去拿外卖");
    }
    public void doSomething(){
        System.out.println("让女朋友坐你腿上看电影");
    }
    public void after(){
        System.out.println("和女朋友上床睡觉");
    }
}
public class Facade {
    private Food food;
    private Girlfriend girlfriend;
    private TV tv;

    public Facade() {
        this.food = Food.getInstance();
        this.girlfriend = Girlfriend.getInstance();
        this.tv = TV.getInstance();
    }
    public void first(){
        food.prepare();
        girlfriend.ask();
        tv.on();
    }
    public void during(){
        food.eat();
        girlfriend.doSomething();
        tv.play();
    }
    public void after(){
        food.discard();
        tv.off();
        girlfriend.after();
    }

    public static void main(String[] args) {
        Facade facade=new Facade();
        facade.first();
        System.out.println("----");
        facade.during();
        System.out.println("----");
        facade.after();
    }
}

 

posted @ 2021-07-27 10:55  一拳超人的逆袭  阅读(62)  评论(0编辑  收藏  举报