Java设计模式之外观模式

外观模式

  • 定义:外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节。

  • 优点:1) 外观模式对外屏蔽了子系统的细节,因此外观模式降低了客户端对子系统使用的复杂性。2) 外观模式对客户端与子系统的耦合关系,让子系统内部的模块更易维护和扩展。3) 通过合理的使用外观模式,可以帮我们更好的划分访问的层次。4) 当系统需要进行分层设计时,可以考虑使用Facade模式

  • 缺点:不能过多的或者不合理的使用外观模式,使用外观模式好,还是直接调用模块好。要以让系统有层次,利于维护为目的。

  • 与适配器模式的区别:适配器模式是将一个对象包装起来以改变其接口,而外观是将一群对象 ”包装“起来以简化其接口。它们的意图是不一样的,适配器是将接口转换为不同接口,而外观模式是提供一个统一的接口来简化接口。

  • 博客:https://hanchao.blog.csdn.net/article/details/97616272

  • 实例:瀑布模型软件开发场景:瀑布模型软件开发过程:制定计划、需求分析、软件设计、程序编写、软件测试和运行维护。
    制定计划的主要执行者:产品经理。
    需求分析的主要执行者:产品经理。
    软件设计的主要执行者:开发经理。
    程序编写的主要执行者:开发攻城狮,可能有多人。
    软件测试的主要执行者:测试攻城狮,可能有多人。
    运行维护的主要执行者:运维攻城狮,可能有多人。

  • 类图:

    Java设计模式之外观模式
    /** * 外观类 */public class Project {    /*** 项目名称*/    private String name;    /*** 产品经理*/    private ProjectManager projectManager;    /*** 开发经理*/    private DevelopManager developManager;    /*** 开发攻城狮们*/    private ListDevelopmentEngineer> engineerList;    /*** 测试攻城狮*/    private ListQualityAssurance> assuranceList;    /*** 运维攻城狮*/    private ListOperations> operationsList;    public Project(String name, ProjectManager projectManager, DevelopManager developManager, ListDevelopmentEngineer> engineerList, ListQualityAssurance> assuranceList, ListOperations> operationsList) {this.name = name;this.projectManager = projectManager;this.developManager = developManager;this.engineerList = engineerList;this.assuranceList = assuranceList;this.operationsList = operationsList;    }    /*** 开发过程*/    public void developProject() {System.out.println(this.name + " 项目启动...");System.out.println("-----------------------------");//指定计划projectManager.makeProjectPlan();//需求分析projectManager.analysisRequirement();//软件设计developManager.makeDevelopmentPlan();//程序编写engineerList.forEach(DevelopmentEngineer::develop);//软件测试assuranceList.forEach(QualityAssurance::test);//运行维护operationsList.forEach(Operations::operationAndMaintenance);System.out.println("-----------------------------");System来源:赴前尘
                                                            

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年7月11日
下一篇 2021年7月11日

相关推荐