147 lines
3.3 KiB
Java
147 lines
3.3 KiB
Java
|
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();
|
||
|
}
|
||
|
}
|
||
|
}
|