(1)一个系统有大量的对象。
(2)这些对象耗费大量的内存。
(3)这些对象的状态中的大部分都可以外部化。
(4)这些对象可以按照内部状态分成很多的组,当把外部状态从对象中剔除时,每一个组都可以仅用一个对象代替。
(5)软件系统不依赖于这些对象的身份,换言之,这些对象可以是不可分辨的。
满足以上条件的系统可以使用享元模式。但是同时要注意,享元模式需要维护一个记录了系统已有的所有享元的表,而这需要耗费资源,因此,只有在有足够多的享元实例可供共享时才值得使用享元模式。
享元模式的优点和缺点
享元模式不是一个常见的模式,享元模式的优点在于它大幅度地降低内存中对象的数量。但是,做到这一点代价也是很高的:
(1)享元模式使得系统更加复杂。为了使对象可以共享,需要将一些状态外部化,这使得程序的逻辑复杂化。
(2)享元模式将享元对象的状态外部化,而读取外部状态使得运行时间稍微变长。
在实际的工作过程中,个人还想不起来哪个项目真正使用过享元模式。
结构模式(Structural Pattern)小结
结构模式(Structural Pattern)一共有七种,分别是:适配器模式、装饰模式、合成模式、代理模式、享元模式、门面模式、桥梁模式。
大致总结如下:
