9

据我了解,享元设计模式与工厂或单例设计模式没有太大区别。

它只是一个生产不可变(和池化)对象的工厂。它只是为每种类型(托管对象)提供一个实例的单例,而不是全局单个实例。

工厂模式和单例模式是创建模式,那么为什么要考虑享元模式呢?

4

2 回答 2

4

Flyweight 模式的本质不是对象的创建,而是对象的共享。该模式指出要共享的对象通常保存在某些外部数据结构中,但没有指定如何创建或表示这些数据结构。

使模式结构化的原因是使用类工厂类来获得享元。这对设计施加了静态结构。

于 2015-06-10T14:05:27.300 回答
1

享元模式不创建任何对象。它用于存储在多个对象之间共享的数据。您可以将其与类中的静态方法/变量进行比较。您可以使用保存此方法或数据的全局实例来减少应用程序的内存占用,而不是为每个实例定义它们。

假设您正在使用多个解析器解析一个大型数据文件,而不是让每个解析器读取完整的数据文件,您可以使用享元模式来保存每个解析器可以访问的数据文件的单个实例。

于 2015-06-10T09:34:17.733 回答