`

1. 创建型模式 (3) 建造者模式

阅读更多
1. 创建型模式 (3) 建造者模式

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

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

包含角色
    1. Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
    2. Builder:为创建一个产品对象的各个部件指定抽象接口。
    3. ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口。
    4. Director:构造一个使用Builder接口的对象,指导构建过程。


1. 标准建造者模型

package com.andrew.pattern0103.builder.modal01;
public class Person {
    private String head;
    private String body;
    private String foot;
    public String getHead() {
        return head;
    }
    public void setHead(String head) {
        this.head = head;
    }
    public String getBody() {
        return body;
    }
    public void setBody(String body) {
        this.body = body;
    }
    public String getFoot() {
        return foot;
    }
    public void setFoot(String foot) {
        this.foot = foot;
    }
}

package com.andrew.pattern0103.builder.modal01;
public class Man extends Person {
    public Man() {
        System.out.println("开始建造男人");
    }
}

package com.andrew.pattern0103.builder.modal01;
public class Woman extends Person {
    public Woman() {
        System.out.println("开始建造女人");
    }
}


package com.andrew.pattern0103.builder.modal01;
public interface PersonBuilder {
    public void buildHead();
    public void buildBody();
    public void buildFoot();
    Person buildPerson();
}


package com.andrew.pattern0103.builder.modal01;
public class ManBuilder implements PersonBuilder{
    Person person;
    public ManBuilder() {
        person = new Man();
    }
    public void buildHead(){
        person.setFoot("建造男人的头");
    }
    public void buildBody() {
        person.setBody("建造男人的身体");
    }
    public void buildFoot() {
        person.setFoot("建造男人的脚");
    }
    public Person buildPerson() {
        return person;
    }
}

package com.andrew.pattern0103.builder.modal01;
public class WomanBuilder implements PersonBuilder{
    Person person;
    public WomanBuilder() {
        person = new Woman();
    }
    public void buildHead(){
        person.setFoot("建造女人的头");
    }
    public void buildBody() {
        person.setBody("建造女人的身体");
    }
    public void buildFoot() {
        person.setFoot("建造女人的脚");
    }
    public Person buildPerson() {
        return person;
    }
}


package com.andrew.pattern0103.builder.modal01;
public class PersonDirector {
    public Person constructPerson(PersonBuilder pb) {
        pb.buildHead();
        pb.buildBody();
        pb.buildFoot();
        return pb.buildPerson();
    }
}


package com.andrew.pattern0103.builder.modal01;
/**
 * 1. 标准建造者模式
 * 
 * @author andrew
 * @date 2018/06/10
 */
public class TestClient {
    public static void main(String[] args) {
        PersonDirector personDirector = new PersonDirector();
        Person womanPerson = personDirector.constructPerson(new WomanBuilder());
        Person manPerson = personDirector.constructPerson(new ManBuilder());
    }
}
运行结果:
开始建造女人
开始建造男人


2. 简化建造者模型

package com.andrew.pattern0103.builder.modal02;
public class Man {
    private String head;
    private String body;
    private String foot;
    public String getHead() {
        return head;
    }
    public void setHead(String head) {
        this.head = head;
    }
    public String getBody() {
        return body;
    }
    public void setBody(String body) {
        this.body = body;
    }
    public String getFoot() {
        return foot;
    }
    public void setFoot(String foot) {
        this.foot = foot;
    }
}


package com.andrew.pattern0103.builder.modal02;
public class ManBuilder {
    Man man;
    public ManBuilder() {
        man = new Man();
    }
    public void buildHead(){
        man.setFoot("建造男人的头");
    }
    public void buildBody() {
        man.setBody("建造男人的身体");
    }
    public void buildFoot() {
        man.setFoot("建造男人的脚");
    }
    public Man buildMan() {
        System.out.println("开始建造男人");
        return man;
    }
}


package com.andrew.pattern0103.builder.modal02;
/**
 * 2. 简化造者模式
 * 
 * @author andrew
 * @date 2018/06/10
 */
public class TestClient {
    public static void main(String[] args) {
        ManBuilder manBuilder = new ManBuilder();
        Man man = manBuilder.buildMan();
    }
}
运行结果:
开始建造男人
分享到:
评论

相关推荐

    JAVA-设计模式-创建型模式-建造者模式

    JAVA-设计模式-创建型模式-建造者模式

    c++设计模式-创建型模式-建造者模式

    **建造者模式(Builder Pattern)**是软件设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,而无需暴露构建过程。在C++中,这种模式常用于将对象的创建过程与使用过程分离,使得对象的构建更加灵活,...

    5. 创建型设计模式小结1

    4. 建造者模式:建造者模式是一种将复杂对象构建与其表示分离的模式,允许用户使用相同的建造过程创建不同的表示。它通过将创建过程分解为多个步骤,使得创建复杂对象的过程更加灵活。每个步骤对应建造者的一个方法...

    Java创建型设计模式之建造者模式详解.rar

    建造者模式是软件设计模式中的一种,属于创建型模式,它的主要目的是将对象的构建过程与表示分离,使得相同的构建过程可以创建不同的表示。在Java中,建造者模式经常用于构造复杂对象,通过一步一步地创建对象,使得...

    设计模式——建造者模式

    建造者模式是一种结构型设计模式,它允许我们分步骤创建复杂对象,而无需暴露构建过程的内部细节。这种模式在Java编程中非常常见,尤其是在处理需要多种构建方式或需要隔离对象构造过程的场景。 建造者模式的核心...

    [原创][创建型模式] 建造者模式的理解

    建造者模式,是一种创建型设计模式,它提供了一种分步骤构建复杂对象的方法,使得创建过程独立于使用过程。在实际编程中,这种模式经常用于构造对象时有多个可选部分,用户可以选择是否包含这些部分或者如何组合它们...

    设计模式-建造者模式

    建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种方法来分步骤构建复杂的对象,使得构建过程和表示分离,使得同样的构建过程可以创建不同的表示。这种模式经常在对象的构造过程中需要进行多种选择...

    设计模式之建造者模式

    建造者模式(Builder Pattern)是设计模式中的一种创建型模式,它允许我们分步骤构建复杂的对象,通过将构造过程与对象本身分离,使得同样的构造过程可以创建不同的表示。这种模式常用于当创建对象的步骤复杂或者...

    4.设计模式-建造者模式1

    今天,我们将讨论创建型模式中的一种模式,即建造者模式。 建造者模式的定义是将一个复杂对象的创建与它的表示分离,使得同样的构建过程可以创建不同的表示。这种模式可以很好地解决一些复杂对象的创建问题,例如,...

    [创建型模式]设计模式之建造者模式(Builder Pattern)

    【创建型模式】设计模式之建造者模式(Builder Pattern) 建造者模式(Builder Pattern)是设计模式中的一个创建型模式,它提供了一种方法来分步骤构造复杂的对象,使得构造过程和表示分离,使得同样的构建过程可以...

    设计模式之创建型模式实验.docx

    【设计模式之创建型模式实验】 创建型设计模式主要关注对象的创建,它们提供了一种在不指定具体类的情况下创建对象的方式,增强了系统的灵活性和可扩展性。在本实验中,我们将探讨五种常见的创建型设计模式:简单...

    java常用设计模式-建造者模式

    -java常用设计模式-建造者模式是java中的一种创建型设计模式,它允许开发者通过一步一步地构建复杂对象来创建不同类型的对象。 建造者模式的定义 建造者模式是一种创建型设计模式,它允许开发者通过一步一步地构建...

    java 23种设计模式.zip

    1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:模板方法模式、命令模式、...

    设计模式 创建型模式 Builder模式(建造者)

    担任这个角色的类调用具体建造者角色以创建产品对象。导演者并没有产品类的具体知识,真正拥有产品类的具体知识的是具体建造者对象。 ◆产品(Product): 产品便是建造中的复杂对象。 详细见博客 ...

    设计模式之建造者Builder模式

    **建造者模式(Builder Pattern)**是软件设计模式中的一种,属于创建型模式。它将复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通常用于那些需要大量构造参数的对象,通过...

    建造者模式实例

    建造者模式是一种设计模式,属于创建型模式,它允许我们分步骤构造复杂对象,而无需暴露构造过程。这种模式将对象的构造过程和表示层分离,使得同样的构造过程可以创建不同的表示形式。在《设计模式:可复用面向对象...

    建造者模式学习以及与工厂模式的区别

    建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种方法来分步骤构建复杂的对象,使得构建过程和表示分离。这种模式常用于当一个对象的构建过程复杂且需要多个步骤时,或者当我们希望同一个构建过程...

    Java建造者模式源码

    Java建造者模式是一种设计模式,属于创建型模式,它的主要目的是通过隔离对象的构建过程和其表示,使得构造复杂对象的过程更加灵活。这种模式通常在需要创建对象的多个部分,并且这些部分可能需要以特定顺序组合时...

Global site tag (gtag.js) - Google Analytics