java设计模式之建造者模式(创建型模式)

什么是建造者模式?

建造者模式(Builder Pattern)是一种创建型设计模式,它通过将对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。

建造者模式包含以下几个关键角色:

  1. 产品(Product):表示被构建的复杂对象,它包含多个组成部分。

  2. 抽象建造者(Builder):定义了创建产品各个部分的抽象方法,允许不同的具体建造者实现不同的构建过程。

  3. 具体建造者(Concrete Builder):实现了抽象建造者的方法,通过具体的构建步骤来创建产品。

  4. 指挥者(Director):负责调用建造者的方法来创建产品,它定义了构建过程的顺序。

优点:

  • 封装性好,创建和使用分离。
  • 扩展性好,建造类之间独立、一定程度上解耦。

缺点:

  • 产生多余的Builder对象。
  • 产品内部发生变化,建造者都要修改,成本较大。

 代码实例

// 产品类
class Product {
    private String part1;
    private String part2;
    private String part3;
    public void setPart1(String part1) {
        this.part1 = part1;
    }
    public void setPart2(String part2) {
        this.part2 = part2;
    }
    public void setPart3(String part3) {
        this.part3 = part3;
    }
    public void show() {
        System.out.println("Part 1: " + part1);
        System.out.println("Part 2: " + part2);
        System.out.println("Part 3: " + part3);
    }
}
// 抽象建造者
interface Builder {
    void buildPart1();
    void buildPart2();
    void buildPart3();
    Product getResult();
}
// 具体建造者
class ConcreteBuilder implements Builder {
    private Product product;

    ConcreteBuilder() {
        this.product = new Product();
    }
    @Override
    public void buildPart1() {
        product.setPart1("Part 1");
    }
    @Override
    public void buildPart2() {
        product.setPart2("Part 2");
    }
    @Override
    public void buildPart3() {
        product.setPart3("Part 3");
    }
    @Override
    public Product getResult() {
        return product;
    }
}
// 指挥者
class Director {
    private Builder builder;

    Director(Builder builder) {
        this.builder = builder;
    }
    void construct() {
        builder.buildPart1();
        builder.buildPart2();
        builder.buildPart3();
    }
}
// 客户端代码
public class Client {
    public  static void main(String[] args) {
        Builder builder = new ConcreteBuilder();
        Director director = new Director(builder);
        director.construct();
        Product product = builder.getResult();
        product.show();
    }
}

产品类 Product 表示要构建的复杂对象,它包含多个部分(part1、part2、part3)。抽象建造者接口 Builder 定义了创建产品各个部分的抽象方法,具体建造者类 ConcreteBuilder 实现了这些方法,通过具体的构建步骤来创建产品。指挥者类 Director 负责调用建造者的方法来创建产品,它定义了构建过程的顺序。

在客户端代码中,首先创建一个具体建造者实例 builder,然后创建指挥者实例 director,并将具体建造者传递给指挥者。调用指挥者的 construct 方法来按照一定的顺序构建产品。最后,通过建造者的 getResult 方法获取构建好的产品,并调用产品的 show 方法展示其内容。

建造者模式可以将复杂对象的构建过程抽象出来,使得产品的表示和构建过程解耦,从而可以灵活地组合不同的部分来构建不同的对象。它适用于构建过程稳定但具有不同组合方式的复杂对象,且可以方便地扩展和维护。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值