设计模式学习笔记--享元(Flyweight)模式(三)

2014-11-23 23:31:26 · 作者: · 浏览: 3
有的条件都满足时,可以考虑使用享元模式:

(1)一个系统有大量的对象。

(2)这些对象耗费大量的内存。

(3)这些对象的状态中的大部分都可以外部化。

(4)这些对象可以按照内部状态分成很多的组,当把外部状态从对象中剔除时,每一个组都可以仅用一个对象代替。

(5)软件系统不依赖于这些对象的身份,换言之,这些对象可以是不可分辨的。

满足以上条件的系统可以使用享元模式。但是同时要注意,享元模式需要维护一个记录了系统已有的所有享元的表,而这需要耗费资源,因此,只有在有足够多的享元实例可供共享时才值得使用享元模式。


享元模式的优点和缺点


享元模式不是一个常见的模式,享元模式的优点在于它大幅度地降低内存中对象的数量。但是,做到这一点代价也是很高的:

(1)享元模式使得系统更加复杂。为了使对象可以共享,需要将一些状态外部化,这使得程序的逻辑复杂化。

(2)享元模式将享元对象的状态外部化,而读取外部状态使得运行时间稍微变长。

在实际的工作过程中,个人还想不起来哪个项目真正使用过享元模式。


结构模式(Structural Pattern)小结


结构模式(Structural Pattern)一共有七种,分别是:适配器模式、装饰模式、合成模式、代理模式、享元模式、门面模式、桥梁模式。

大致总结如下: