做吉祥物设计看什么网站,南京seo培训,网页设计的代码大全,全球前10网站开发语言设计模式 4#xff1a;建造者模式
定义与目的
定义#xff1a;建造者模式将一个复杂对象的构建与其表示分离#xff0c;使得同样的构建过程可以创建不同的表示。目的#xff1a;该模式主要用于创建复杂对象时#xff0c;这些对象的创建过程可能涉及多个步骤#xff0c;…设计模式 4建造者模式
定义与目的
定义建造者模式将一个复杂对象的构建与其表示分离使得同样的构建过程可以创建不同的表示。目的该模式主要用于创建复杂对象时这些对象的创建过程可能涉及多个步骤并且可能需要不同的配置选项。建造者模式将构建过程与表示分离使得可以构建出不同配置的同一类型对象。
实现示例
假设我们要创建一个计算机对象这个对象有很多配置选项比如处理器、内存、硬盘等。我们可以使用建造者模式来创建不同配置的计算机实例。
// 定义产品类 - 计算机
public class Computer {// 计算机的处理器型号private String processor;// 计算机的内存大小单位GBprivate int ram;// 计算机的硬盘大小单位GBprivate int hardDrive;// 私有构造函数仅允许通过 Builder 创建 Computer 实例// 参数 builder 用于从 Builder 类中获取处理器、内存和硬盘的信息private Computer(Builder builder) {this.processor builder.processor;this.ram builder.ram;this.hardDrive builder.hardDrive;}// Builder 类用于构建 Computer 实例public static class Builder {// 计算机的处理器型号private String processor;// 计算机的内存大小单位GBprivate int ram;// 计算机的硬盘大小单位GBprivate int hardDrive;// 设置处理器型号// 参数 processor 为处理器型号// 返回当前 Builder 实例以便可以继续链式调用其他方法public Builder processor(String processor) {this.processor processor;return this;}// 设置内存大小// 参数 ram 为内存大小单位GB// 返回当前 Builder 实例以便可以继续链式调用其他方法public Builder ram(int ram) {this.ram ram;return this;}// 设置硬盘大小// 参数 hardDrive 为硬盘大小单位GB// 返回当前 Builder 实例以便可以继续链式调用其他方法public Builder hardDrive(int hardDrive) {this.hardDrive hardDrive;return this;}// 构建 Computer 实例// 返回使用当前 Builder 实例创建的 Computer 实例public Computer build() {return new Computer(this);}}// Getter 方法用于获取处理器型号public String getProcessor() {return processor;}// Getter 方法用于获取内存大小public int getRam() {return ram;}// Getter 方法用于获取硬盘大小public int getHardDrive() {return hardDrive;}// 重写 toString 方法用于格式化输出 Computer 实例的信息Overridepublic String toString() {return Computer{ processor processor \ , ram ram , hardDrive hardDrive };}
}// 客户端代码
public class Client {public static void main(String[] args) {// 创建一台配置较高的计算机Computer computerHighEnd new Computer.Builder().processor(i9) // 设置处理器型号为 i9.ram(32) // 设置内存大小为 32 GB.hardDrive(1024) // 设置硬盘大小为 1024 GB.build(); // 构建 Computer 实例// 创建一台配置较低的计算机Computer computerLowEnd new Computer.Builder().processor(i3) // 设置处理器型号为 i3.ram(4) // 设置内存大小为 4 GB.hardDrive(128) // 设置硬盘大小为 128 GB.build(); // 构建 Computer 实例// 输出高配置计算机的信息System.out.println(computerHighEnd); // 输出: Computer{processori9, ram32, hardDrive1024}// 输出低配置计算机的信息System.out.println(computerLowEnd); // 输出: Computer{processori3, ram4, hardDrive128}}
}使用场景
当你需要创建一个复杂对象且该对象的构建过程需要分步骤进行时。当构建对象的不同配置需要不同的步骤时。当构建对象的步骤可能会发生变化时。
建造者模式通过将构建过程与表示分离使得可以在不同的情况下使用相同的构建步骤来创建不同的对象配置。这对于创建复杂对象时非常有用特别是在对象的构建过程需要多个步骤的情况下。
小结
建造者模式适用于创建具有多个可选部分的复杂对象。它提供了一种方式来逐步构建这些对象同时保持代码的简洁性和可扩展性。