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(); } }