设计模式——建造者模式(Builder)

建造者模式(Builder Pattern)是一种对象构建的设计模式,它允许你以一种逐步构建的方式来创建复杂对象。建造者模式通常用于构建具有多个组成部分的对象,并且这些组成部分通常具有不同的构建和表示方式。

建造者模式主要包括以下几个角色:

  1. 产品(Product):表示要创建的复杂对象。
  2. 抽象建造者(Builder):定义一个接口,用于规范产品对象的各个组成部分的建造。一般而言,接口内部定义了一系列的方法用于逐步构造产品。
  3. 具体建造者(ConcreteBuilder):实现抽象建造者接口,构建和装配产品的各个组成部分。
  4. 导演者(Director):负责调用具体建造者以创建产品对象的实例。

以下是一个简单的Java代码示例,展示了建造者模式:

java 复制代码
// 产品类
public class Product {
    private String partA;
    private String partB;
    private String partC;

    // 私有构造方法,只能通过建造者来创建实例
    private Product(Builder builder) {
        this.partA = builder.partA;
        this.partB = builder.partB;
        this.partC = builder.partC;
    }

    // 静态内部类作为建造者
    public static class Builder {
        private String partA;
        private String partB;
        private String partC;

        // 设置产品组成部分的方法
        public Builder setPartA(String partA) {
            this.partA = partA;
            return this; // 链式调用
        }

        public Builder setPartB(String partB) {
            this.partB = partB;
            return this;
        }

        public Builder setPartC(String partC) {
            this.partC = partC;
            return this;
        }

        // 构建产品对象的方法
        public Product build() {
            return new Product(this);
        }
    }

    // 产品的其他方法或属性(如果需要)

    @Override
    public String toString() {
        return "Product{" +
                "partA='" + partA + '\'' +
                ", partB='" + partB + '\'' +
                ", partC='" + partC + '\'' +
                '}';
    }
}

// 客户端代码
public class Client {
    public static void main(String[] args) {
        Product product = new Product.Builder()
                .setPartA("PartA")
                .setPartB("PartB")
                .setPartC("PartC")
                .build(); // 构造产品对象

        System.out.println(product); // 输出产品对象的信息
    }
}

在上面的示例中,Product 类有一个私有的构造方法,只能通过其静态内部类 Builder 来创建实例。Builder 类中包含了设置产品各个组成部分的方法,并且每个方法都返回 Builder 类型的实例(链式调用),以便可以连续设置多个部分。最后,通过调用 build() 方法来构造并返回 Product 对象。

建造者模式的主要优点包括:

  • 封装性好:将复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
  • 灵活性强:允许在创建产品对象时只通过指定类型的内容来创建,不需要知道对象的具体构建过程。
  • 代码可读性好:通过链式调用设置对象的各个部分,使得代码更加清晰易读。

建造者模式适用于构建复杂对象,且这些对象的构建过程需要遵循特定的步骤或顺序的场景。

相关推荐
牛奶咖啡133 小时前
学习设计模式《二十三》——桥接模式
学习·设计模式·桥接模式·认识桥接模式·桥接模式的优点·何时选用桥接模式·桥接模式的使用示例
左灯右行的爱情3 小时前
深度学习设计模式:责任链(Chain of Responsibility)模式(例子+业务场景+八股)
深度学习·设计模式·责任链模式
是2的10次方啊3 小时前
🚀 Spring设计模式大揭秘:23种模式藏在你每天在用的框架里
设计模式
东北南西3 小时前
设计模式-单例模式
前端·javascript·单例模式·设计模式
快乐非自愿5 小时前
掌握设计模式--命令模式
设计模式·命令模式
我希望的一路生花14 小时前
Nik Collection 6.2全新版Nik降噪锐化调色PS/LR插件
人工智能·计算机视觉·设计模式·stable diffusion·aigc
东北南西19 小时前
设计模式-工厂模式
前端·设计模式
JohnYan20 小时前
工作笔记 - 改进的单例应用
javascript·设计模式·bun
郝学胜-神的一滴1 天前
使用C++11改进工厂方法模式:支持运行时配置的增强实现
开发语言·c++·程序人生·设计模式
Leo来编程1 天前
设计模式3-模板方法模式
设计模式·模板方法模式