MultiThread/pattern/src/main/java/cn/bunny/pattern5/demo3/CommandDemo.java

147 lines
3.3 KiB
Java
Raw Normal View History

2025-02-01 20:32:09 +08:00
package cn.bunny.pattern5.demo3;
import lombok.Data;
public class CommandDemo {
public static void main(String[] args) {
ConcreteLowComputerBuilder concreteLowComputerBuilder = new ConcreteLowComputerBuilder();
Director director = new Director(concreteLowComputerBuilder);
director.constructComputer();
System.out.println(concreteLowComputerBuilder.getComputer());
System.out.println("\n-----------------分割线-----------------\n");
ConcreteHighComputerBuilder concreteHighComputerBuilder = new ConcreteHighComputerBuilder();
director = new Director(concreteHighComputerBuilder);
director.constructComputer();
System.out.println(concreteHighComputerBuilder.getComputer());
}
// 构建产品接口
interface ComputerBuilder {
/**
* 构建 CPU 方法
*/
void buildCPU();
/**
* 构建 RAM 方法
*/
void buildRAM();
/**
* 构建 磁盘 方法
*/
void buildHardDrive();
/**
* 返回产品
*
* @return Computer
*/
Computer getComputer();
}
// 产品类
@Data
static class Computer {
private String CPU;
private String RAM;
private String hardDrive;
}
// 构建低端产品
static class ConcreteLowComputerBuilder implements ComputerBuilder {
private final Computer computer = new Computer();
/**
* 构建 CPU 方法
*/
@Override
public void buildCPU() {
computer.setCPU("Low CPU");
}
/**
* 构建 RAM 方法
*/
@Override
public void buildRAM() {
computer.setRAM("Low RAM");
}
/**
* 构建 磁盘 方法
*/
@Override
public void buildHardDrive() {
computer.setHardDrive("Low Driver");
}
/**
* 返回产品
*
* @return Computer
*/
@Override
public Computer getComputer() {
return computer;
}
}
// 构建高端产品
static class ConcreteHighComputerBuilder implements ComputerBuilder {
private final Computer computer = new Computer();
/**
* 构建 CPU 方法
*/
@Override
public void buildCPU() {
computer.setCPU("High CPU");
}
/**
* 构建 RAM 方法
*/
@Override
public void buildRAM() {
computer.setRAM("High RAM");
}
/**
* 构建 磁盘 方法
*/
@Override
public void buildHardDrive() {
computer.setHardDrive("High Driver");
}
/**
* 返回产品
*
* @return Computer
*/
@Override
public Computer getComputer() {
return computer;
}
}
// 构建者
public static class Director {
private final ComputerBuilder builder;
public Director(ComputerBuilder builder) {
this.builder = builder;
}
public void constructComputer() {
builder.buildCPU();
builder.buildRAM();
builder.buildHardDrive();
}
}
}