建造者模式应用场景及demo
时间: 2023-06-14 12:06:41 浏览: 68
建造者模式是一种创建型设计模式,其主要目的是将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。
应用场景:
1. 当需要构建复杂对象时,使用建造者模式可以将对象的创建过程分解为多个步骤,从而更好地管理复杂对象的构建过程。
2. 当创建对象的算法应该独立于该对象的组成部分以及它们的装配方式时,可以使用建造者模式。
3. 当需要构建不同表示的对象时,使用建造者模式可以更灵活地创建不同的表示。
Demo:
假设我们要创建一个电脑对象,电脑有很多组成部分,例如CPU、内存、硬盘、显示器等等。我们可以使用建造者模式来创建这个电脑对象,具体实现如下:
1. 定义电脑对象的各个组成部分:
```java
public class Computer {
private String cpu;
private String memory;
private String hardDisk;
private String monitor;
public void setCpu(String cpu) {
this.cpu = cpu;
}
public void setMemory(String memory) {
this.memory = memory;
}
public void setHardDisk(String hardDisk) {
this.hardDisk = hardDisk;
}
public void setMonitor(String monitor) {
this.monitor = monitor;
}
public String getCpu() {
return cpu;
}
public String getMemory() {
return memory;
}
public String getHardDisk() {
return hardDisk;
}
public String getMonitor() {
return monitor;
}
}
```
2. 定义电脑对象的建造者:
```java
public class ComputerBuilder {
private Computer computer = new Computer();
public void buildCpu(String cpu) {
computer.setCpu(cpu);
}
public void buildMemory(String memory) {
computer.setMemory(memory);
}
public void buildHardDisk(String hardDisk) {
computer.setHardDisk(hardDisk);
}
public void buildMonitor(String monitor) {
computer.setMonitor(monitor);
}
public Computer getComputer() {
return computer;
}
}
```
3. 创建电脑对象的指挥者:
```java
public class Director {
public void construct(ComputerBuilder builder) {
builder.buildCpu("Intel Core i7");
builder.buildMemory("16GB DDR4");
builder.buildHardDisk("1TB SSD");
builder.buildMonitor("27-inch 4K Display");
}
}
```
4. 使用建造者模式创建电脑对象:
```java
public class Client {
public static void main(String[] args) {
ComputerBuilder builder = new ComputerBuilder();
Director director = new Director();
director.construct(builder);
Computer computer = builder.getComputer();
System.out.println(computer.getCpu());
System.out.println(computer.getMemory());
System.out.println(computer.getHardDisk());
System.out.println(computer.getMonitor());
}
}
```
通过上述 Demo,我们可以看到建造者模式的使用过程,可以更好地管理复杂对象的构建过程,也可以更灵活地创建不同的表示。