在享元模式的实现中,我们没有像之前一样,把一个细粒度的类实例设计成一个单独的类,而是把它作为共享对象的内部状态放在共享类的内部定义。
四、享元模式的优缺点
分析完享元模式的实现之后,让我们继续分析下享元模式的优缺点:
优点:
降低了系统中对象的数量,从而降低了系统中细粒度对象给内存带来的压力。
缺点:
1.为了使对象可以共享,需要将一些状态外部化,这使得程序的逻辑更复杂,使系统复杂化。
2.享元模式将享元对象的状态外部化,而读取外部状态使得运行时间稍微变长。
五、使用场景
在下面所有条件都满足时,可以考虑使用享元模式:
- 一个系统中有大量的对象;
- 这些对象耗费大量的内存;
- 这些对象中的状态大部分都可以被外部化;
- 这些对象可以按照内部状态分成很多的组,当把外部对象从对象中剔除时,每一个组都可以仅用一个对象代替;
-
软件系统不依赖这些对象的身份。
满足上面的条件的系统可以使用享元模式。但是使用享元模式需要额外维护一个记录子系统已有的所有享元的表,而这也需要耗费资源,所以,应当在有足够多的享元实例可共享时才值得使用享元模式。
注:相关教程知识阅读请移步到c#教程频道。










