建造者模式和享元模式有什么区别?

8
在使用上,建造者模式和享元模式有何不同?因为它们都处理大量对象。
3个回答

11

建造者模式用于创建许多对象,而享元模式则是关于共享这样一组对象。

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


9

直接来自维基百科。

享元模式

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

生成器模式

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

一个帮助构建对象,另一个帮助节省内存。您可以使用生成器“构建”不同的享元对象。


2

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

使享元工作的关键是使用工厂方法或构建器设计模式来控制对象实例化。工厂方法的工作仅是创建对象:根据输入条件返回适当类型的对象。

抽象工厂与构建器类似,它也可以构建复杂对象。主要区别在于Builder模式侧重于逐步构建复杂对象。抽象工厂的重点是产品对象的系列(简单或复杂)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接