定义
- 提供了减少对象数量从而改善应用所需的对象结构的方式
- 运用共享技术有效地支持大量细粒度的对象
类型
结构型
适用场景
- 常常用于系统底层的开发,以便解决系统的性能问题
- 系统有大量相似对象、需要缓冲池的场景
优点
- 减少对象的创建,降低内存中对象的数量,降低系统的内存,提高效率
- 减少内存之外的其他资源占用(new所需的时间、文件句柄、窗口句柄等)
缺点
- 关注内/外部状态、关注线程安全问题
为了使用享元模式,大部分使用的HashMap,那如果为了线程安全使用HashTable,那有可能得不偿失,因为有同步锁要等待。
Coding
public class EmployeeFactory {
private static final Map<String, Employee> EMPLOYEE_MAP = new HashMap<String, Employee>();
public static Employee getManger(String department){
Employee employee = EMPLOYEE_MAP.get(department);
if (employee == null){
employee = new Employee();
EMPLOYEE_MAP.put(department, employee);
}
return employee;
}
}
代码还是比较简单的。
如果帮到你了,请点击右上角给个赞吧!!
学习笔记。内容总结于Geely老师的《Java设计模式精讲 》
欢迎访问我的博客:他和她的猫