生成器模式——对象创建型模式

原创 2016年08月29日 17:22:43

一、意图
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以构建不同的表示。
二、适用性
在以下情况下使用Builder模式

  • 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
  • 当构造过程必须允许被构造的对象有不同的表示时。

三、结构
这里写图片描述

四、代码
Builder

public abstract class Builder {
    abstract void buildPartA(String text);
    abstract void buildPartB(String text);
    abstract void buildPartC(String text);
    abstract Product getResult();
}

具体的Builder

public class ConcreteBuilder extends Builder {

    private String partA ;
    private String partB;
    private String partC;

    @Override
    void buildPartA(String text) {
        this.partA = text;
    }

    @Override
    void buildPartB(String text) {
        this.partB = text;
    }

    @Override
    void buildPartC(String text) {
        this.partC = text;
    }

    @Override
    Product getResult() {
        Product product = new Product();
        product.setPartA(partA);
        product.setPartB(partB);
        product.setPartC(partC);
        return product;
    }
}

Product

public class Product {
    private String partA;
    private String partB;
    private String partC;

    public String getPartA() {
        return partA;
    }

    public void setPartA(String partA) {
        this.partA = partA;
    }

    public String getPartB() {
        return partB;
    }

    public void setPartB(String partB) {
        this.partB = partB;
    }

    public String getPartC() {
        return partC;
    }

    public void setPartC(String partC) {
        this.partC = partC;
    }

    @Override
    public String toString() {
        return "Product{" +
                "partA='" + partA + '\'' +
                ", partB='" + partB + '\'' +
                ", partC='" + partC + '\'' +
                '}';
    }
}

Director

public class Director {
    private Builder mBuilder;

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

    public Product getProduct(){
       return mBuilder.getResult();
    }
}

Client

public class Client {
    public static void main(String[] args){
        Builder builder = new ConcreteBuilder();
        builder.buildPartA("partA");
        builder.buildPartB("partB");
        builder.buildPartC("partC");

        Director director = new Director(builder);

        System.out.println(director.getProduct());
    }

}
执行结果:
Product{partA='partA', partB='partB', partC='partC'}
版权声明:本文为博主原创文章,未经博主允许不得转载。

浅谈设计模式——对象的创建型模式

近期对Java的设计模式比较感兴趣,设计模式更好的用途只能等到工作后慢慢地体会了,以下总结一下每种设计模式的摘要,方便有个知识框架。感兴趣的可以参考阎宏博士的《Java与模式》,同时参考以下博客,个人...
  • zhuqiuhui
  • zhuqiuhui
  • 2016年08月03日 10:42
  • 412

生成器模式 创建型模式

生成器模式:将复杂对象的表示和创建进行分离。   参考:https://www.cnblogs.com/JackyTecblog/arc...
  • qq_20064245
  • qq_20064245
  • 2017年12月12日 16:27
  • 27

Builder 生成器模式(创建型模式)

将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 要点: 1、Builder模式主要用于“分步骤构建一个复杂的对象”。在这其中“分步骤”是一个稳定的算法,而复杂对...
  • QQ282030166
  • QQ282030166
  • 2012年03月03日 10:46
  • 327

创建型模式之建造者模式(生成器模式)

建造者模式,或称之为生成器模式,是将对象的构造过程从对象的各种表示中分离出来。 从而通过建造者组合不同的对象细节,实例化出对象的不同表示。 建造者模式和工厂模式的差异: 工厂模式:将不...
  • lanyuanheng
  • lanyuanheng
  • 2017年09月14日 19:25
  • 51

认识创建型模式---生成器模式

生成器模式将一个复杂对象的构建跟他的表示分离,使得同样的构建过程可以创建不同的表示。在以下情况下考虑使用生成器模式: 1.当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时。 2....
  • zjx8866521
  • zjx8866521
  • 2013年04月22日 21:37
  • 344

创建型模式——生成器模式(Builder Pattern)

一. 生成器模式简介  生成器模式也有称为建造者模式。生成器模式的意图在于将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示(GoF)。在软件设计中,有时候面临着一个非常复杂的对象的...
  • zerowzj
  • zerowzj
  • 2008年04月07日 11:00
  • 755

(创建型模式)BUILDER——建造者模式(生成器模式)

1、意图 建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 2、核心思想      将产品的内部表象和产品的生成过程分割开来,从而使一个建造过...
  • u011744843
  • u011744843
  • 2016年05月21日 17:14
  • 116

设计模式之--生成器模式与抽象工厂模式的比较

从形式上来讲,通过角色合并,方法功能的转变,抽象工厂可以和生成器模式形式上取得一致(比如抽象工厂只处理一个产品族,工厂方法都处理同一个产品)。但注意,这仅仅是形式上的,实际上,抽象工厂和生成器模式有着...
  • hawksoft
  • hawksoft
  • 2011年07月22日 20:12
  • 5187

学习笔记:模式学习-生成器模式

前言 在前两讲,我们介绍了工厂方法和抽象工厂模式,这两种模式都是完成对一个或者若干个内部结构相对简单的对象的创建工作。换句话来说,这样的对象内部之间没有明显的子部分或者说是各个子部分间的“组装”过程...
  • qq_16956581
  • qq_16956581
  • 2015年11月17日 13:54
  • 463

设计模式--六种创建型模式

前言   每几种模式之间都有一定的联系,从中发现它们的相同点和不同点,研究发生改变的节点,这就是本篇博客所要说明的创建型设计模式之间的联系。它们包括:简单工厂模式、单例模式、工厂方法模式、抽象工厂...
  • m18633778874
  • m18633778874
  • 2017年04月13日 16:58
  • 343
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:生成器模式——对象创建型模式
举报原因:
原因补充:

(最多只允许输入30个字)