当前位置: 首页 > news >正文

设计模式-建造者模式

        建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种构建复杂对象的有效方式。建造者模式将复杂对象的构建过程和其表示分离,使得同样的构建过程可以创建不同的表示。
        以下是一个简单的 Java 版本的建造者模式的示例:

public class Car {
    private String engine;
    private String wheels;
    private String color;

    public static class Builder {
        private String engine;
        private String wheels;
        private String color;

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

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

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

        public Car build() {
            return new Car(this);
        }
    }

    private Car(Builder builder) {
        this.engine = builder.engine;
        this.wheels = builder.wheels;
        this.color = builder.color;
    }

    // getters...
}

public class Main {
    public static void main(String[] args) {
        Car car = new Car.Builder()
            .engine("V8")
            .wheels("Alloy")
            .color("Red")
            .build();
    }
}


        在这个示例中,Car 类有一个嵌套的 Builder 类。Builder 类有一系列的方法来设置 Car 的属性,每个方法返回 Builder 对象本身,以便可以链式调用这些方法。build 方法创建一个新的 Car 对象,并使用 Builder 的当前设置来初始化它。
        这种方式的好处是,客户端代码可以清晰地看到对象是如何被构建的,而且在添加新的属性时,不需要修改客户端代码。

http://www.dtcms.com/a/2948.html

相关文章:

  • 汇编的指令
  • Linux下的命令行参数和环境变量
  • 【Git LFS】huggingface 断点续传
  • 【机器学习】模型平移不变性/等变性归纳偏置Attention机制
  • MATLAB R2023b安装包下载链接及软件安装教程
  • Proteus仿真--一种智能频率计的设计与制作(AVR单片机+proteus仿真)
  • 经典卷积神经网络 - AlexNet
  • 轻松学习Python:基础知识汇总
  • 在 Vue react 中,哪些地方用到闭包?
  • LeetCode--快速排序
  • LVS-DR模式
  • android利用FFmpeg进行视频转换
  • Java中的常量管理:接口还是枚举,您如何选择?
  • 一、XSS加解密编码解码工具
  • c语言练习91:合并两个有序链表
  • 使用WPF模仿Windows记事本界面
  • 【单片机学习笔记】Windows+Vscode+STM32F4+freeRTOS+FatFs gcc环境搭建
  • 大学英语试卷
  • 数组的初始化以及拷贝
  • 使用GoogleNet网络实现花朵分类
  • 在Kubernetes(k8s)上部署整个SpringCloud微服务应用
  • Java IO流
  • 从零开始搭建第一个django项目
  • 使用序列化技术保存数据 改进 IO流完成项目实战水果库存系统
  • Kotlin中的内联函数:提升性能与解决Lambda表达式参数问题
  • 模拟器-雷电-使用adb push或adb pull操作文件
  • Android Studio初学者实例:RecyclerView学习--模仿今日头条--续
  • 向量检索库Milvus架构及数据处理流程
  • 如何系统 如何进行SQL监控-执行SQL分析打印
  • 【每日一练】20231023