【发布时间】:2009-11-14 05:29:58
【问题描述】:
构建器模式和享元模式在使用方面有什么区别,因为它们都处理大量对象?
【问题讨论】:
标签: design-patterns builder-pattern flyweight-pattern
构建器模式和享元模式在使用方面有什么区别,因为它们都处理大量对象?
【问题讨论】:
标签: design-patterns builder-pattern flyweight-pattern
Builder 模式用于创建许多对象,其中享元模式是关于共享这样的对象的集合。
这两种模式都处理“复合”,即可能有多个元素的对象,但它们根本不需要一起使用。 Flyweight 的原型用例是在文本编辑器应用程序中反复使用几十个字符对象池(这是"GoF" book 中给出的示例)
【讨论】:
享元模式适用于“必须操作许多对象且这些对象不能包含无关数据”的情况。在 Java 中,String 对象作为享元进行管理。 Java 将所有固定的字符串文字放入文字池中。对于冗余文字,Java 在池中只保留一份副本。
使轻量级工作的关键是使用工厂方法或构建器设计模式控制对象实例化。工厂方法的工作只是创建对象:给定输入条件,返回适当类型的对象。
Abstract factory 与 builder 类似,也可以构造复杂的对象。主要区别在于构建器模式侧重于逐步构建复杂对象。抽象因子的重点是产品对象族(简单或复杂)。
【讨论】: