8

构建器模式和享元模式在使用方面有什么区别,因为它们都处理大量对象?

4

3 回答 3

11

Builder 模式用于创建许多对象,而享元模式是关于共享这样的对象集合。

这两种模式都处理“复合”,即可能有多个元素的对象,但它们根本不需要一起使用。Flyweight 的原型用例是在文本编辑器应用程序中反复使用几十个字符对象的池(这是“GoF”书中给出的示例)

于 2009-11-14T05:39:20.547 回答
9

直接来自维基百科。

蝇量级

Flyweight是一种软件设计模式。享元是一种通过与其他类似对象共享尽可能多的数据来最小化内存使用的对象;当简单的重复表示将使用不可接受的内存量时,这是一种使用大量对象的方法。

建造者

建造者模式是一种软件设计模式。目的是抽象对象构造的步骤,以便这些步骤的不同实现可以构造对象的不同表示。

一个帮助构建对象,另一个帮助内存使用。您可能会使用构建器来“构建”不同的享元对象。

于 2009-11-14T05:38:59.220 回答
2

当“必须操纵许多对象并且这些对象不能承受无关数据”时,享元模式是合适的。在 Java 中,String 对象作为享元进行管理。Java 将所有固定的字符串文字放入文字池中。对于冗余文字,Java 在池中只保留一份副本。

使轻量级工作的关键是使用工厂方法或构建器设计模式控制对象实例化。工厂方法的工作只是创建对象:给定输入条件,返回适当类型的对象。

抽象工厂类似于builder,也可以构造复杂的对象。主要区别在于构建器模式侧重于逐步构建复杂对象。抽象因素的重点是产品对象族(简单或复杂)。

于 2010-04-13T17:45:14.530 回答