【问题标题】:What is the difference between Builder Pattern and Flyweight Pattern?建造者模式和享元模式有什么区别?
【发布时间】:2009-11-14 05:29:58
【问题描述】:

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

【问题讨论】:

    标签: design-patterns builder-pattern flyweight-pattern


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      直接来自维基百科。

      Flyweight

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

      Builder

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2010-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-15
          • 1970-01-01
          • 1970-01-01
          • 2010-10-11
          • 2020-07-24
          相关资源
          最近更新 更多