代码之家  ›  专栏  ›  技术社区  ›  user366312

builder模式和flyweight模式有什么区别?

  •  8
  • user366312  · 技术社区  · 15 年前

    builder模式和flyweight模式在使用上有什么区别,因为它们都处理大量的对象?

    3 回复  |  直到 15 年前
        1
  •  11
  •   mjv    15 年前

    构建器模式用于 创造 许多物体,其中飞锤图案是关于 分享 这样的对象集合。

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

        2
  •  9
  •   bytebender    15 年前

    直接从维基百科。

    Flyweight

    flyweight是一种软件设计 模式。飞锤是指 通过共享来最小化内存使用 尽可能多的数据 类似的物体;它是一种使用 当一个简单的 重复表示将使用 不可接受的内存量。

    Builder

    构建器模式是一个软件 设计模式。其目的是 建筑的抽象步骤 对象使之不同 这些步骤的实现可以 构建不同的 物体。

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

        3
  •  2
  •   Sudhakar Kalmari    15 年前

    当“许多对象必须被操纵,并且这些数据不能提供外来数据”时,Ful权重模式是合适的。在爪哇中,String对象被管理为Ful权重。Java将所有固定字符串文本放入文本池中。对于冗余文本,Java在池中只保留一个副本。

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

    抽象工厂类似于生成器,因为它也可以构造复杂的对象。主要的区别在于构建器模式专注于一步一步地构造复杂的对象。抽象因子的重点是产品对象的系列(简单或复杂)。

    推荐文章