设计模式之builds
Builder模式是一种创建型模式,它允许用户在不了解内部构造细节的情况下,通过逐步添加或设置值来创建复杂对象.这种模式将构建复杂对象的过程与它的表示分离开来,使得同样的构建过程可以创建不同的表示在Builder模式中,通常会有一个Builder类,它包含构建复杂对象所需的各个步骤或组成部分。用户通过调用Builder类中的方法来逐步构建对象。当所有的必要步骤都完成时,用户会调用一个特定的方法来生成最终的对象。
在使用 Builder 模式时,通常有一个 Director(指挥者)类和一个 Builder 接口,以及具体的 Builder 实现类。Director 负责调用 Builder 的方法来构建对象,而 Builder 负责具体的构建过程。这样,客户端代码只需要关注 Director 和 Builder,而不需要关心具体的构建过程。
**
Builder(建造者)** 是一种创建型设计模式,它的主要目的是将一个复杂对象的构建过程与其表示相分离,使得同样的构建过程可以创建不同的表示。
在使用 Builder 模式时,通常有一个 Director(指挥者)类和一个 Builder 接口,以及具体的 Builder 实现类。Director 负责调用 Builder 的方法来构建对象,而 Builder 负责具体的构建过程。这样,客户端代码只需要关注 Director 和 Builder,而不需要关心具体的构建过程。
以下是 Builder 模式的一般结构:
-
产品类(Product):表示被构建的复杂对象。在 Builder 模式中,它通常有多个部分。
-
抽象建造者类(Builder):定义构建产品的抽象接口,包括构建每个部分的方法。
-
具体建造者类(ConcreteBuilder):实现 Builder 接口,负责构建产品的具体部分,并提供获取最终产品的方法。
-
指挥者类(Director):负责使用 Builder 接口构建产品,它通常包含一个构建方法,该方法接收一个 Builder 对象作为参数,并按照一定的顺序调用 Builder 的方法来构建产品。
// 1. 产品类 class Computer { private String CPU; private String RAM; private String storage; public Computer(String CPU, String RAM, String storage) { this.CPU = CPU; this.RAM = RAM; this.storage = storage; } // 省略 getter 和 setter 方法 } // 2. 抽象建造者类 interface ComputerBuilder { void buildCPU(String CPU); void buildRAM(String RAM); void buildStorage(String storage); Computer getResult(); } // 3. 具体建造者类 class ConcreteComputerBuilder implements ComputerBuilder { private Computer computer; public ConcreteComputerBuilder() { this.computer = new Computer("", "", ""); } @Override public void buildCPU(String CPU) { computer.setCPU(CPU); } @Override public void buildRAM(String RAM) { computer.setRAM(RAM); } @Override public void buildStorage(String storage) { computer.setStorage(storage); } @Override public Computer getResult() { return computer; } } // 4. 指挥者类 class Director { public void construct(ComputerBuilder builder) { builder.buildCPU("Intel i7"); builder.buildRAM("16GB"); builder.buildStorage("512GB SSD"); } } // 客户端代码 public class Client { public static void main(String[] args) { // 创建具体建造者 ComputerBuilder builder = new ConcreteComputerBuilder(); // 创建指挥者 Director director = new Director(); // 指挥者构建产品 director.construct(builder); // 获取构建好的产品 Computer computer = builder.getResult(); // 使用产品 System.out.println("Computer CPU: " + computer.getCPU()); System.out.println("Computer RAM: " + computer.getRAM()); System.out.println("Computer Storage: " + computer.getStorage()); } }