`

生成器模式Builder 分离整体构建算法和部件构造

阅读更多
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

例如导出数据到文本文件和XML文件的步骤都是一样的:文件头,内容,文件尾

public interface Builder {
  public void buildPart();
}

public interface Product {
 
}

public class ConcreteBuilder implements Builder {
  private Product resultProduct;

  public Product getResult() {
    return resultProduct;
  }

  public void buildPart() {
   
  }
}

public class Director {
  private Builder builder;
  public Director(Builder builder) {
    this.builder = builder;
  }

  public void construct() {
    builder.buildPart();
  }
}

生成器分成两个很重要的部分:(生成器,指导者)
一个部分是Builder接口,定义了如何构建各个部件,也就是知道每个部件功能如何实现,以及如何装配这些部件到产品中去。

另一部分是Director,知道如何组合来构建产品,也就是Director负责整体的构建算法,而且通常是分步骤执行。

在生成器模式中,由于Builder对象只是提供接口给Director使用,那么具体的部件创建和装配方式是被Builder接口隐藏的,Director并不知道这些具体的实现细节。
分享到:
评论

相关推荐

    浅谈生成器在设计中的应用

    - **意图**:生成器模式通过将构建过程和表示分离,使得可以在不改变构建逻辑的情况下,创建多种不同的表示形式。 - **使用场合**:适用于创建复杂对象,需要独立于对象的组成部分和组装方式,或者需要支持多种...

    软件中间件实验报告 完全可用

    生成器模式适用于以下场景:创建复杂对象的算法应独立于对象的组成部分和装配方式,以及当需要构造的对象表示可以多样化时。 生成器模式的参与者包括: 1. **Builder**:定义创建产品对象的接口。 2. **...

    DesignPattern

    本质:分离整体构建算法和部件构造 --第九章:原型模式(Prototype) 本质:克隆生成对象 --第十章:中介者(Mediator) 本质:封装交互 --第十一章:代理模式(Proxy) 本质:控制对象访问 --第十二章:观察者模式...

    设计模式精解(GoF 23 种设计模式解析)

    - **应用场景**:当一个对象的构建过程很复杂或者有多个变体时,可以使用Builder模式。例如,构建一个复杂的XML文档时,可以使用该模式来简化构建过程。 - **优点**:可以灵活地构造出不同类型的对象。 - **缺点**:...

    二十三种设计模式【PDF版】

    汽车由车轮 方向盘 发动机很多部件组成,同时,将这些部件组装成汽车也是一件复杂的工作,Builder 模式就是将这两 种情况分开进行。 设计模式之 Prototype(原型) 用原型实例指定创建对象的种类,并且通过拷贝这些...

    设计模式精解-GoF 23种设计模式解析附C++实现源码.pdf

    - **1.4 Builder模式**:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 - **应用场景**:当创建复杂对象的算法应该独立于部分组成对象的类时。 - **优点**:各个部件灵活组装,...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    - **应用场景**:当创建的对象较复杂,由多个部件构成,并且这些部件需要按照一定的算法组装起来时使用。 - **优点**:各个部分的构造独立,便于加入新的建造者。 - **缺点**:产品的内部组成部分变化时,建造者...

    C++23种设计模式一点就通

    简单来说,建造者模式允许你逐步构造一个复杂的对象,而且可以使用相同的构建过程来创建不同类型的对象。 - **例子**:用“生产流水线”来比喻建造者模式非常恰当。在汽车制造行业中,每辆汽车都需要按照一定的标准...

    java 23种设计模式经典解释

    建造者模式是一种创建型设计模式,它允许您分步骤构建复杂对象。该模式允许用户通过不同的方式来创建对象的不同部分,最后将它们组装成一个完整的对象。 **应用场景:** - 当创建复杂对象的算法应该独立于部件及其...

    GoF 23种设计模式解析附C++实现源码.pdf

    - **C++实现**: 使用私有构造函数和静态成员函数来实现单例模式。 **1.4 Builder模式** - **定义**: 将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 - **目的**: 分离对象构建与表示...

    GoF 23种设计模式解析

    就增加功能而言,装饰器模式相比生成子类更加灵活。 - **应用场景**:需要扩展功能,但不想通过继承来实现。 - **优点**:可以在运行时动态地为对象添加职责。 - **缺点**:如果过度使用装饰器模式,可能会导致...

Global site tag (gtag.js) - Google Analytics