目录
享元模式说明
(1)享元模式
享元模式就是运用共享技术有效的支持大量细粒度的对象。
(2)享元模式的应用
当系统中有大量对象,且这些对象消耗大量内存时,可以考虑使用享元模式。
享元模式具体应用
(1)抽象享元角色
package com.example.demo.flyweight;
public interface Employee {
public void work();
}
(2)具体享元角色
package com.example.demo.flyweight;
public class Manager implements Employee{
private String title = "经理";
private String department;
private String workContent;
public Manager(String department){
this.department = department;
}
public String getWorkContent() {
return workContent;
}
@Override
public void work() {
}
}
(3)享元工厂角色
package com.example.demo.flyweight;
import java.util.HashMap;
import java.util.Map;
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.println("部门:"+department);
String workContent = department+"部门工作内容......";
System.out.println("工作内容:"+workContent);
EMPLOYEE_MAP.put(department,manager);
}
return manager;
}
}
(4)客户端
package com.example.demo.flyweight;
public class TestFlyWeight {
private static final String [] departments = {"PM","DB","OA"};
public static void main(String[] args) {
for(int i=0;i<departments.length;i++){
Manager manager = (Manager) EmployeeFactory.getManager(departments[i]);
manager.work();
}
}
}