建造者模式-复杂实例的创建与组装

建造者模式定义

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

建造者模式结构图

在这里插入图片描述

建造者模式角色介绍

Builder:抽象建造者角色,负责定义创建Product产品对象的各个部件接口,同时定义获取完成Product产品对象的接口。

ConcreteBuilder:具体建造者角色,它实现了Builder接口,实现各个部件的具体构造和装配方法,实现了获取最终复杂产品对象结果的方法。

Product:产品角色,它是被构建的复杂对象,包含多个组成部件,具体建造者创建该产品的各个组成部分。

Director:指挥者角色,它负责安排复杂对象的建造次序,指挥者面向抽象建造者编程。指挥者在construct()建造方法中调用建造者对象的部件构造与装配方法,完成复杂对象的建造,并通过建造者获取建造的完整复杂产品对象。

建造者模式结构代码

抽象建造者:

public abstract class Builder {

    public abstract void buildPartA();

    public abstract void buildPartB();

    public abstract void buildPartC();

    public abstract Product getResult();
}

具体建造者:

public class ConcreteBuilder extends Builder {

    Product product = new Product();
    public void buildPartA() {
        product.setPartA("PartA");
    }

    public void buildPartB() {
        product.setPartA("PartB");
    }

    public void buildPartC() {
        product.setPartA("PartC");
    }

    public Product getResult() {
        return 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;
    }
}

指挥者:

public class Director {

    private Builder builder;

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

    public Product construct(){
        builder.buildPartA();
        builder.buildPartB();
        builder.buildPartC();
        return builder.getResult();
    }
}

客户端:

public class Client {

    public static void main(String[] args) {
        Director director = new Director(new ConcreteBuilder());
        Product product = director.construct();
        System.out.println("PartA:"+product.getPartA()+",PartB:"+product.getPartB()+",PartC:"+product.getPartC());
    }
}
建造者模式运行机制

客户端确定具体建造者的类型,并实例化具体建造者对象(也可以通过配置文件和反射机制),然后通过指挥者类的构造函数或者Setter方法将该对象传入指挥者类中。最后客户端只需要与指挥者进行交互,就可以完成复杂产品对象的创建和获取。

建造者模式解决的核心问题

建造者模式解决的是复杂对象创建和组装过程。复杂对象的组成部分和创建过程是固定的,所以将固定的组成部分交由抽象建造者的抽象方法定义,将固定的创建过程交由指挥者管理。但这个复杂对象具有不同的表现形式,则通过不同的具体建造者来实现,表现形式不同,建造者就不同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值