设计模式-外观模式

外观模式:又叫做门面模式,通过为多个子系统提供统一的接口,通过统一的接口访问子系统的模式。外部系统无需关注内部系统的实现逻辑。对外来说,降低了系统的复杂性。

举个例子:

假设公司要上马一个新项目,但是新项目比较特殊,涉及到公司的多个部分,营销部,后勤部,法务部等等,需要他们通力合作才能完成,领导就成立了一个临时的项目组,从各个部分抽调人手过来。那么项目开始运行的时候,公司外部的客户需要接触这个项目的时候就直接找这个临时的项目组,如果需要和其他部门交流,那就由这个项目组去协调,而对于公司的客户来说,就简单多了。

用代码实现一下:

各个子系统:

// 营销部
public class YingxiaoBu {
    public void xuanchuan(){
        System.out.println("打个广告");
    }
}
// 财务部
public class CaiwuBu {
    public void yusuan(){
        System.out.println("批个预算");
    }
}
// 后勤部
public class HouqinBu {
    public void zhunbei(){
        System.out.println("材料准备好");
    }
}

外观(门面):

public class ProjectFacade {
    private YingxiaoBu yingxiaoBu = new YingxiaoBu();
    private CaiwuBu caiwuBu = new CaiwuBu();
    private HouqinBu houqinBu = new HouqinBu();

    // 把各个子系统的功能进行组合以完成特定的任务
    public void project(){
        System.out.println("项目开始");
        yingxiaoBu.xuanchuan();
        caiwuBu.yusuan();
        houqinBu.zhunbei();
        System.out.println("项目结束");
    }
}

测试:

public class Client {
    public static void main(String[] args) {
        ProjectFacade projectFacade = new ProjectFacade();
        projectFacade.project();
    }
}

小结一下:外观模式是对迪米特法则的具体的实现。其实这种方式在项目的实际开发中应该是有不少使用的。通常我们的项目会有若干个功能相对独立的子模块,而有些功能就是需要这些子模块的部分功能组合来完成,我们就会在一个类中组合子系统,然后来完成特定的功能。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 文摘一:有些地方外观模式也被叫做门面模式,英文即Facade Pattern,提前说明一下。 试想这种情况,用户添...
    _浅墨_阅读 591评论 0 1
  • 今天我们来学习另一种结构型模式,它就是外观模式(Facade Pattern)。 模式定义 外部与一个子系统的通信...
    HJXANDHMR阅读 589评论 0 4
  • 一、概念 其目的在于降低系统的复杂程度! 1.1、定义 又叫门面模式,隐藏系统的复杂性,并向客户端提供了一个客户端...
    双鱼子曰1987阅读 240评论 0 0
  • 外观模式 外观模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的外观对象进行。外观模式是一个高层次的接...
    java雅雅阅读 355评论 0 0
  • 1、外观模式的概念 外观模式(Facade),可以理解为,为子系统中的一组接口提供一个一致的界面,此模式定义了一个...
    钢镚koala阅读 203评论 0 1

友情链接更多精彩内容