美文网首页
设计模式《外观模式》

设计模式《外观模式》

作者: 天道__ | 来源:发表于2018-07-23 13:36 被阅读0次

引言

  上一节我们讲了适配器模式,这回我们来说说外观模式。

示例地址

  Demo

类图

image

定义

  要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。

使用场景

  1. 为一个复杂子系统提供一个简单接口。子系统往往因为不断演化而变得越来越复杂,甚至可能被替换。大多数模式使用时都会产生更多、更小的类,在这使子系统更具可重用性的同时也更容易对子系统进行定制、修改,这种易变性使得隐藏子系统的具体实现变得尤为重要。外观模式提供一个简单统一的接口。对外隐藏子系统的具体实现、隔离变化。
  2. 当你需要构建一个层次结构的子系统时,使用外观模式定义子系统中每层的入扣点。如果子系统之间是相互依赖的,你可以让他们仅通过外观接口进行通信,从而简化了他们之间的依赖关系。

外观模式示例

  之前我们开一个公司需要跑三个部门,流程比较麻烦。“前前后后加起来,即使你对业务非常熟悉、材料齐备、不出任何差错,也至少需要去3个部门跑6趟,前后加起来十几个工作日就过去了。”然后 15年国家出了一个政策“三证合一,就可以将所有材料集中送到一个窗口,材料在政府部门内部流转,企业不需要再跑路,经过5至10个工作日就可一次性拿完三个证件。

1. 工商营业执照
/**
 * 工商营业执照
 *
 * @author 512573717@qq.com
 * @created 2018/7/25  下午2:19.
 */
public class BusinessCertificate {
    public void transaction() {
        System.out.println("工商行政管理部门办理 营业执照");
    }
}
2. 组织机构代码证
/**
 * 组织机构代码证
 *
 * @author 512573717@qq.com
 * @created 2018/7/25  下午2:21.
 */
public class OrganizationCertificate {
    public void transaction() {
        System.out.println("组织机构代码管理部门办理 组织机构代码证");
    }
}
3. 税务登记证
/**
 * 税务登记证
 *
 * @author 512573717@qq.com
 * @created 2018/7/25  下午2:23.
 */
public class TaxationCertificate {
    public void transaction() {
        System.out.println("税务部门办理 税务登记证");
    }
}
4. 门面模式(一个窗口解决所有)
/**
 * 三证合一 门面模式
 *
 * @author 512573717@qq.com
 * @created 2018/7/25  下午2:30.
 */
public class FacadeCertificate {

    private OrganizationCertificate mOrganizationCertificate;
    private TaxationCertificate mTaxationCertificate;
    private BusinessCertificate mBusinessCertificate;

    public FacadeCertificate() {
        mOrganizationCertificate = new OrganizationCertificate();
        mTaxationCertificate = new TaxationCertificate();
        mBusinessCertificate = new BusinessCertificate();
    }

    public void transact() {

        System.out.println("收到申请人提供的材料");
        // 办理营业执照
        mBusinessCertificate.transaction();
        // 组织机构
        mOrganizationCertificate.transaction();
        // 税务证
        mTaxationCertificate.transaction();
    }
}
5. Client
System.out.println("老王去窗口注册企业,提交相关材料");
FacadeCertificate facadeCertificate=new FacadeCertificate();
facadeCertificate.transact();
System.out.println("15个工作日 出证");

总结

  外观模式的目的不是给予子系统添加新的功能接口,而是为了让外部减少与子系统内多个模块的交互,松散耦合,从而让外部能够更简单地使用子系统。
  外观模式的本质是:封装交互,简化调用。

相关文章

  • 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/gptjmftx.html