美文网首页
建造者模式(Builder)

建造者模式(Builder)

作者: bobcorbett | 来源:发表于2017-08-16 09:47 被阅读0次

建造者模式(Builder),将一个复杂对象的构建(Add)与它的表示(p1.Show()和p2.Show())分离,使得同样的构建过程(指construct方法)可以创建不同的表示。

主方法,客户端不需要知道具体建造过程

public class main {
    public static void main(String[] args) {
        Director director = new Director();
        Builder b1 = new ConcreteBuilder1();
        Builder b2 = new ConcreteBuilder2();

        director.Construct(b1);//指挥者用ConcreteBuilder的方法来建造产品
         Product p1 = b1.GetResult();
        p1.Show();

        director.Construct(b2);
        Product p2 = b2.GetResult();
        p2.Show();
    }
}

产品类

import java.util.ArrayList;
import java.util.List;

/**
 * 产品类,由多个部件组成,存放于list当中
 */
public class Product {
    List<String> parts = new ArrayList<String>();
    public void Add(String part) {//添加产品部件
        parts.add(part);
    }

    public void Show() {//列举所有产品部件
        System.out.println("\n 产品 创建 ----");
        for (String part: parts) {
            System.out.println(part);
        }
    }
}

抽象建造类

public abstract class Builder {
    public abstract void BuildPartA();
    public abstract void BuildPartB();
    public abstract Product GetResult();
}

具体构造类1

public class ConcreteBuilder1 extends Builder {
    private Product product = new Product();
    //建造具体的两个部件是部件A和部件B
    public void BuildPartA() {
        product.Add("部件A");
    }

    public void BuildPartB() {
        product.Add("部件B");
    }

    public Product GetResult() {
        return product;
    }
}

具体构造类2

public class ConcreteBuilder2 extends Builder {
    private Product product = new Product();
    //建造具体的两个部件是部件X和部件Y
    public void BuildPartA() {
        product.Add("部件X");
    }

    public void BuildPartB() {
        product.Add("部件Y");
    }

    public Product GetResult() {
        return product;
    }
}

指挥者类,把所有构建相关的方法写到这个类里面

/**
 * 用来指挥建造过程
 */
public class Director {
    public void Construct(Builder builder) {
        builder.BuildPartA();
        builder.BuildPartB();
    }
}

相关文章

  • 设计模式(四):建造者模式

    建造者模式(Builder Pattern) 建造者模式(Builder Pattern)将一个复杂的构建与其表示...

  • 建造者模式

    建造者模式 创建型模式 Director、Builder、Product建造模型 Builder负责构建Produ...

  • 设计模式之建造者模式

    建造者模式的定义   建造者模式(Builder Pattern)也叫做生成器模式,其定义如下:  Separat...

  • Builder pattern

    Builder pattern 这里所介绍的建造者模式不是GOF中介绍的建造者模式。GOF中的建造者模式主要用于抽...

  • 建造者模式

    建造者模式的定义 建造者模式(Builder Pattern)也叫做生成器模式,其定义如下:Separate th...

  • 设计模式--建造者模式

    目录 本文的结构如下: 引言 什么是建造者模式 模式的结构 典型代码 代码示例 Builder模式变种 建造者模式...

  • Android 中的建造者模式

    Android 中的建造者模式 概述 建造者模式(Builder Pattern)也叫生成器模式,其定义如下:se...

  • 设计模式-构建者模式

    概念 建造者模式(英:Builder Pattern)是一种创建型设计模式,又名:生成器模式。GOF 给建造者模式...

  • 建造者模式-Builder(建造者)

    前言 在软件开发过程中有时需要创建一个复杂的对象,这个复杂对象通常由多个子部件按一定的步骤组合而成。例如,计算机是...

  • 五 建造者模式

    本文主要介绍创建型模式的最后一种————建造者模式。 概念 建造者模式(英:Builder Pattern)是一种...

网友评论

      本文标题:建造者模式(Builder)

      本文链接:https://www.haomeiwen.com/subject/pznbrxtx.html