美文网首页
设计模式(18)之外观模式

设计模式(18)之外观模式

作者: zhglance | 来源:发表于2019-07-05 22:58 被阅读0次

    外观模式(Facade Pattern)隐藏系统的复杂性,给调用者提供一个简单的高层接口,来隐藏系统的复杂性。很类似于项目开发中的Service,Service的方法内部封装了对Biz、

    SLF4J就是典型的外观模式,SLF4J只提供一个外观接口,具体实现对调用方不可见(常见的实现有log4j、logback等)。

    ***Mapper等的调用,统一对外部提供一个Service接口。

    一、需求举例:

    创建一个项目开发团队,有一个Leader,一个初级工程师,1个产品经理。项目预研时,需要Leader技术调研,工程师开发demo;当正式开发项目时,Leader分配工作,产品经理撰写文档,工程师开发。

    二、类图:

    三、代码实例:

    1.工程师类:Engineer

    package com.lance.facade;
    
    public class Engineer {
    
        public void develop() {
           System.out.println("Engineer write code");
        }
    
        public void developDemo() {
            System.out.println("Engineer write demo code");
        }
    }
    
    

    2.领导类:Leader

    package com.lance.facade;
    
    public class Leader {
    
        public void work() {
            System.out.println("Leader assign task");
        }
    
        public void study() {
            System.out.println("technical research");
        }
    }
    
    

    3.产品经理类:ProductManager

    package com.lance.facade;
    
    public class ProductManager {
    
        public void work() {
            System.out.println("ProductManager write requirement document");
        }
    }
    
    

    4.外观类:TeamFacade

    package com.lance.facade;
    
    public class TeamFacade {
    
        private Engineer engineer;
        private Leader leader;
        private ProductManager productManager;
    
        public TeamFacade() {
            engineer = new Engineer();
            leader = new Leader();
            productManager = new ProductManager();
        }
    
        public void programDevelop() {
            leader.work();
            productManager.work();
            engineer.develop();
        }
    
        public void programPreResearch() {
            leader.study();
            engineer.developDemo();
        }
    
    
    }
    
    

    5.主类:FacadePattern

    package com.lance.facade;
    
    public class FacadePattern {
    
        public static void main(String[] args) {
    
    
            System.out.println("==========start==========");
    
            TeamFacade teamFacade = new TeamFacade();
            teamFacade.programPreResearch();
    
            System.out.println("=======================");
    
            teamFacade.programDevelop();
    
            System.out.println("==========end==========");
    
        }
    
    }
    
    

    输出结果:

    ==========start==========
    technical research
    Engineer write demo code
    =======================
    Leader assign task
    ProductManager write requirement document
    Engineer write code
    ==========end==========
    

    相关文章

      网友评论

          本文标题:设计模式(18)之外观模式

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