美文网首页设计模式学习小结
设计模式小结-外观模式

设计模式小结-外观模式

作者: r09er | 来源:发表于2017-10-15 21:49 被阅读1次

外观模式概述

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

示例

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

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("乌龙");

输出

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

外观模式优缺点

优点

    1. 它对客户端屏蔽了子系统组件,减少了客户端所需处理的对象数目,并使得子系统使用起来更加容易。
    1. 它实现了子系统与客户端之间的松耦合关系,这使得子系统的变化不会影响到调用它的客户端,只需要调整外观类即可。
    1. 一个子系统的修改对其他子系统没有任何影响,而且子系统内部变化也不会影响到外观对象。

缺点

    1. 不能很好地限制客户端直接使用子系统类,如果对客户端访问子系统类做太多的限制则减少了可变性和灵活 性。
    1. 如果设计不当,增加新的子系统可能需要修改外观类的源代码,违背了开闭原则。

适用场景

    1. 当要为访问一系列复杂的子系统提供一个简单入口时可以使用外观模式。
    1. 客户端程序与多个子系统之间存在很大的依赖性。引入外观类可以将子系统与客户端解耦,从而提高子系统的独立性和可移植性。
    1. 在层次化结构中,可以使用外观模式定义系统中每一层的入口,层与层之间不直接产生联系,而通过外观类建立联系,降低层之间的耦合度。

相关文章

  • 设计模式小结-外观模式

    外观模式概述 在日常生活中,在家自己做饭吃和到饭店吃饭,最大的不同其实是在于到饭店吃饭你不需要考虑如何把菜做出来,...

  • Android设计模式——外观模式(七大结构型)

    1.外观模式介绍 外观模式(Facade Pattern),是七大结构型设计模式之一。 外观模式运...

  • 设计模式[9]-外观模式-Facade Pattern

    1. 外观模式 外观模式(Facade Pattern),又称为门面模式,是非常常用的结构性设计模式。外观模式使得...

  • java设计模式-外观模式(Facade)

    外观模式,属于结构性模式。属于设计模式里面比较简单的设计模式,本人认为是最简单的设计模式。 所谓外观,就是我们能看...

  • 了解外观模式

    java 设计模式 ------外观模式 Java中一共有23种设计模式,每种设计模式各有特...

  • 设计模式之-4.外观模式

    每看一次设计模式,感觉每一个设计模式看起来是那么简单,对于外观模式我的理解就是外观模式:外观模式,这个名字起得不怎...

  • 设计模式详解——外观模式

    本篇文章介绍一种设计模式——外观模式。本篇文章内容参考《JAVA与模式》之门面模式,外观模式,深入浅出外观模式(二...

  • 外观模式(Facede)

    本文参考自: 《JAVA设计模式》之外观模式(Facade) 1. 作用 外观模式也叫门面模式,门面模式是对象的结...

  • 设计模式---外观模式

    1、外观模式(Facade):也叫门面模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个...

  • 设计模式——外观模式

    阎宏博士的《JAVA与模式》一书中开头是这样描述外观(Facade)模式的:门面模式是对象的结构模式,外部与一个子...

网友评论

    本文标题:设计模式小结-外观模式

    本文链接:https://www.haomeiwen.com/subject/aeffuxtx.html