享元模式的定义为:采用一个共享来避免大量拥有相同内容对象的开销。这种开销中最常见、直观的就是内存的损耗。享元模式以共享的方式高效的支持大量的细粒度对象。
Flyweight模式的有效性很大程度上取决于如何使用它以及在何处使用它,当以下情况都成立时使用Flyweight模式。
一个应用程序使用了大量的对象,
完全有余使用了大量的对象,造成了很大的存储开销。
对象的大多数状态都可以变为外部状态。
如果删除对象的外部状态那么可以用相对较少的共享对象取代很多组对象。
Flyweight对象可以被共享,对于概念上明显有别的对象,标识测试将返回真值。
....老师的原话:
有很多很小的对象,它们有很多相同的东西(属性),把它们定义为同一个对象。那些不同的东西(属性),把它们作为方法的参数,称为外部状态。那些相同的属性称为内部状态。 |