`
gatusso52
  • 浏览: 109800 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

享元模式

 
阅读更多

1 解决问题:

享元的意思,就是细粒度的对象

通过把系统分解成细粒度的对象,就可以共享一些资源。


具体的,系统中大量相同的(或非常相近的)对象,

如果每次需要一个,就new一个的话,那么内存很快被耗尽

于是想到用一个“池”保存这些对象,这个池其实是一个HashMap。

这样,一种对象仅仅保存一个实例,以key标识,

系统需要的时候,按key从池中拿即可


2 解决方法

一个细粒度对象抽象类(or接口)

一些可共享的细粒度对象子类

一些不可共享的细粒度对象子类

一个工厂,其实就是上文说的池,它里面有个HashMap返回对象

客户端按key从工厂中取对象


3 另外的问题:

有些细粒度对象,虽然绝大部分属性都相同,但是有细微的不同

解决方案:

a 把这些属性提取到类之外,在被调用出包装

b 这些属性还是在类内部,增加setter,在从工厂中拿出之后,用setter修改

(我不明白的问题:这样的话,引用传递,不是会改变所有的对象吗??)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics