大话设计模式之建造者模式(Java总结)

设计模式之建造者模式

  • 前言
    • 场景
    • 建造者模式
    • 代码示例

前言

  如果需要将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示的意图时,我们需要应用一个设计模式,建造者模式,又叫生成器模式。

场景

  复杂产品的构建过程

建造者模式

  将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
大话设计模式之建造者模式(Java总结)_第1张图片

代码示例

产品类

public class Product {

    /**
     * 定义一些关于产品的操作
     */
    private String part1;
    private String part2;
    public String getPart1() {
        return part1;
    }
    public void setPart1(String part1) {
        this.part1 = part1;
    }
    public String getPart2() {
        return part2;
    }
    public void setPart2(String part2) {
        this.part2 = part2;
    }

}

抽象建造者类

public interface Builder {

    void buildPart1();

    void buildPart2();

    Product retrieveResult();

}

具体建造者类

public class ConcreteBuilder implements Builder {

    private Product product = new Product();
    /**
     * 产品零件建造方法1
     */
    @Override
    public void buildPart1() {
        //构建产品的第一个零件
        product.setPart1("编号:9527");
    }
    /**
     * 产品零件建造方法2
     */
    @Override
    public void buildPart2() {
        //构建产品的第二个零件
        product.setPart2("名称:XXX");
    }
    /**
     * 产品返还方法
     */
    @Override
    public Product retrieveResult() {
        return product;
    }
}

导演者类

public class Director {

    /**
     * 持有当前需要使用的建造器对象
     */
    private Builder builder;

    /**
     * 构造方法,传入建造器对象
     * @param builder 建造器对象
     */
    public Director(Builder builder){
        this.builder = builder;
    }

    /**
     * 产品构造方法,负责调用各个零件建造方法
     */
    public void construct(){
        builder.buildPart1();
        builder.buildPart2();
    }
}

客户端

public class Client {

    public static void main(String[]args){
        Builder builder = new ConcreteBuilder();
        Director director = new Director(builder);
        director.construct();
        Product product = builder.retrieveResult();
        System.out.println(product.getPart1());
        System.out.println(product.getPart2());
    }

}

运行结果
在这里插入图片描述

参考资料
[1]: 大话设计模式 程杰著 清华大学出版社
[2]: 《JAVA与模式》之建造模式

你可能感兴趣的:(设计模式,Java,后端)