设计模式学习小结

设计模式小结-外观模式

2017-10-15  本文已影响1人  r09er

外观模式概述

在日常生活中,在家自己做饭吃和到饭店吃饭,最大的不同其实是在于到饭店吃饭你不需要考虑如何把菜做出来,不需要考虑先煮熟再炸还是直接炸熟,只需要吃就可以了,饭店帮我们完成了其他要做的工作,这个情景就是外观模式的体现.

示例

到茶馆喝茶,主要的步骤有洗杯子,洗茶叶,煮水,泡茶等,而这些操作都由茶馆的服务员提供,而我们做的只是喝茶.用外观模式实现该过程

UML图

示例解析

考虑到拓展能力,所以将功能(drinkTea)抽象出来,具体子类在实现父类方法的时候加入各个操作(operator1,2,3,4)

示例代码

抽象类

public abstract class AbstractOperatorFacade {
    public abstract void drinkTea(String teaName);
}

功能类

public class Operator1 {
    public void washCup(){
        System.out.println("洗杯子");
    }
}
public class Operator2 {
    public void washTea() {
        System.out.println("洗茶叶");
    }
}

public class Operator3 {
    public void BoiledWater(){
        System.out.println("煮水");
    }
}

public class Operator4 {
    public void makeTea(){
        System.out.println("泡茶");
    }
}

具体子类

public class OperatorFacade extends AbstractOperatorFacade {

    private Operator1 operator1;
    private Operator2 operator2;
    private Operator3 operator3;
    private Operator4 operator4;

    public OperatorFacade() {
        operator1 = new Operator1();
        operator2 = new Operator2();
        operator3 = new Operator3();
        operator4 = new Operator4();
    }

    @Override
    public void drinkTea(String teaName) {
        operator1.washCup();
        operator2.washTea();
        operator3.BoiledWater();
        operator4.makeTea();
        System.out.println(teaName + "泡好了");
    }
}

调用

AbstractOperatorFacade abstractOperatorFacade = new OperatorFacade();
abstractOperatorFacade.drinkTea("乌龙");

输出

洗杯子
洗茶叶
煮水
泡茶
乌龙泡好了

外观模式优缺点

优点

缺点

适用场景

上一篇 下一篇

猜你喜欢

热点阅读