享元模式常常用于系统底层的开发,以便于解决系统的性能问题
定义:提供了减少对象数量从而改善应用所需的对象结构方式
运用共享技术有效的支持大量细粒度的对象
比如String, 有就返回,没有就创建,然后将对象保存在缓存池里面
系统有大量相识对象,需要缓冲池的场景(线程池,常量池,数据库连接池)
享元模式-优点:
减少对象的创建,降低内存中对象的数量,降低系统内存,提高效率
较少内存之外的其他资源占用
比如系统操作文件的句柄,如果不共享,就很容易资源浪费
缺点:
关注内/外部状态、关注线程安全问题
使得系统、程序的逻辑复杂化
缓存
和其相关的设计模式: 代理模式、单例模式
例如
public Object get () {
if(map.get(0)==null) {
map.put(0,new object());
}
return map.get(0);
}