美文网首页
设计模式-享元(Flyweight)模式

设计模式-享元(Flyweight)模式

作者: qyfl | 来源:发表于2019-12-01 17:08 被阅读0次

主要角色

  • 共享的资源
  • 管理资源

职责

在开发中一般都会用到线程池,数据库的连接池等技术。享元模式就像连接池一样,有需要就来取,用完就归还。

类图

类关系示意图

代码

    void report();
}
---
public class EmployeeFactory {
    private static final Map<String,Employee> EMPLOYEE_MAP = new HashMap<String,Employee>();

    public static Employee getManager(String department){
        Manager manager = (Manager) EMPLOYEE_MAP.get(department);

        if(manager == null){
            manager = new Manager(department);
            System.out.print("创建部门经理:"+department);
            String reportContent = department+"部门汇报:此次报告的主要内容是......";
            manager.setReportContent(reportContent);
            System.out.println(" 创建报告:"+reportContent);
            EMPLOYEE_MAP.put(department,manager);

        }
        return manager;
    }
}
---
public class Manager implements Employee {
    @Override
    public void report() {
        System.out.println(reportContent);
    }
    private String title = "部门经理";
    private String department;
    private String reportContent;

    public void setReportContent(String reportContent) {
        this.reportContent = reportContent;
    }

    public Manager(String department) {
        this.department = department;
    }
}

使用

public class Test {
    private static final String departments[] = {"RD","QA","PM","BD"};

    public static void main(String[] args) {
       for(int i=0; i<10; i++){
           String department = departments[(int)(Math.random() * departments.length)];
           Manager manager = (Manager) EmployeeFactory.getManager(department);
           manager.report();

       }
    }
}

技巧

相关文章

网友评论

      本文标题:设计模式-享元(Flyweight)模式

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