23种设计模式之建造者模式

目录

什么是建造者模式

基本结构

实现步骤

实现代码(含注释)

使用场景


什么是建造者模式

建造者模式(也被成为⽣成器模式),是⼀种创建型设计模式,软件开发过程中有的时候需要创建很复杂的对象,⽽建造者模式的主要思想是将对象的构建过程分为多个步骤,并为每个步骤定义⼀个抽象的接⼝。具体的构建过程 由实现了这些接⼝的具体建造者类来完成。 同时有⼀个指导者类负责协调建造者的⼯作,按照⼀定的顺序或逻辑来执⾏构建步骤,最终⽣成产品。

基本结构

建造者模式一般由以下几部分组成:

  1. 产品:被构建的复杂对象,包含多个组成部分。
  2. 抽象建造者:定义构建产品各个部分的抽象接口和一个返回产品的方法getResult。
  3. 具体建造者:实现抽象建造者接口,构建产品的各个组成部分,并提供一个方法返回最终产品。
  4. 指导者:调用具体建造者的方法,按照一定的顺序或逻辑来构建产品。

实现步骤

  1. 定义产品类:产品类应该包含多个组成部分,这些组成部分的属性和方法构成了产品的接口。
  2. 定义抽象建造者接口:创建一个接口,包含构建产品各个部分的抽象方法,这些方法通常用于设置产品的各个属性。
  3. 创建具体建造者:实现抽象建造者接口,构建具体的产品。
  4. 定义指导者类:控制构建产品的顺序和步骤
  5. 客户端使用建造者模式:在客户端中创建(具体建造者对象)和(指导者对象),通过指导者来构建产品。

实现代码(含注释)

java 复制代码
//1. 定义产品类
class Product{
//    产品类包含多个组成部分
    private String part1;
    private String part2;
    public void setPart1(String part1){
        this.part1=part1;
    }
    public void setPart2(String part2){
        this.part2=part2;
    }
}
//2.定义抽象建造者接口
interface Builder{
    void buildPart1(String part1);
    void buildPart2(String part2);
    Product getResult();
}
//3.创建具体建造者
class ConcreteBuilder implements Builder{
    Product product=new Product();
    @Override
    public void buildPart1(String part1) {
        product.setPart1(part1);
    }

    @Override
    public void buildPart2(String part2) {
        product.setPart2(part2);
    }

    @Override
    public Product getResult() {
        return product;
    }
}
//定义指导者类
class Directer{
    private Builder builder;
    public Directer(Builder builder){
        this.builder=builder;
    }
//    调用方法构建产品
    public void construct(){
        builder.buildPart1("part1");
        builder.buildPart2("part2");

    }
}
//客户端使用建造者模式:在客户端中创建【具体建造者对象】和【指导者对象】,通过指导者来构建产品。
public class Main {
    public static void main(String[] args) {
        //    具体建造者对象
        Builder builder=new ConcreteBuilder();
//    指导者对象
        Directer directer=new Directer(builder);
//    指导者构建产品
        directer.construct();
//        获取构建好的产品
        Product product=builder.getResult();
//        输出
        System.out.println(product);
    }

}

使用场景

使⽤建造者模式有下⾯⼏处优点:

  1. 使⽤建造者模式可以**将⼀个复杂对象的构建与其表示分离,**通过将构建复杂对象的过程抽象出来,可以使客户 端代码与具体的构建过程解耦。
  2. 同样的构建过程可以创建不同的表示,可以有多个具体的建造者(相互独⽴),可以更加灵活地创建不同组合的对象。

对应的,建造者模式适⽤于复杂对象的创建,当对象构建过程相对复杂时可以考虑使⽤建造者模式,但是当产品的 构建过程发⽣变化时,可能需要同时修改指导类和建造者类,这就使得重构变得相对困难。

相关推荐
季鸢5 小时前
Java设计模式之状态模式详解
java·设计模式·状态模式
smallluan11 小时前
JS设计模式(4):观察者模式
javascript·观察者模式·设计模式
pengyu12 小时前
【Java设计原则与模式之系统化精讲:零】 | 编程世界的道与术(理论篇)
java·后端·设计模式
hstar952713 小时前
三十三、面向对象底层逻辑-SpringMVC九大组件之HandlerExceptionResolver接口设计
java·spring·设计模式·架构
摘星编程21 小时前
抽象工厂模式深度解析:从原理到与应用实战
设计模式·抽象工厂模式·源码分析·软件架构·实战案例
季鸢1 天前
Java设计模式之观察者模式详解
java·观察者模式·设计模式
蔡蓝1 天前
设计模式-迪米特法则
设计模式·log4j·迪米特法则
Gixy1 天前
聊聊纯函数与不可变数据结构
前端·设计模式
Java菜鸟、1 天前
设计模式(代理设计模式)
java·开发语言·设计模式
何中应2 天前
【设计模式-3.7】结构型——组合模式
java·设计模式·组合模式