需要的类:抽象构建,具体构建,具体产品,建造者
/** * 抽象构建 */ public interface AbstractBuilder { /** * 建造主板的方法 */ void buildMainboard(); /** * 建造硬盘的方法 */ void buildHardDisk(); /** * 建造CPU的方法 */ void buildCPU(); /** * 构建成品的方法 */ Computer buildComputer(); }
/** * 具体产品:电脑 */ public class Computer { /** * 主板 */ private String mainboard; /** * 硬盘 */ private String hardDisk; /** * CPU */ private String CPU; public String getMainboard() { return mainboard; } public void setMainboard(String mainboard) { this.mainboard = mainboard; } public String getHardDisk() { return hardDisk; } public void setHardDisk(String hardDisk) { this.hardDisk = hardDisk; } public String getCPU() { return CPU; } public void setCPU(String CPU) { this.CPU = CPU; } @Override public String toString() { return "Computer{" + "mainboard='" + mainboard + '\'' + ", hardDisk='" + hardDisk + '\'' + ", CPU='" + CPU + '\'' + '}'; } }
/** * 具体构建:苹果电脑构建 */ public class AppleBuilder implements AbstractBuilder{ private Computer computer =new Computer(); @Override public void buildMainboard() { computer.setMainboard("苹果主板"); } @Override public void buildHardDisk() { computer.setHardDisk("苹果硬盘"); } @Override public void buildCPU() { computer.setCPU("苹果CPU"); } @Override public Computer buildComputer() { return computer; } }
/** * 具体构建:华为电脑构建 */ public class HuaWeiBuilder implements AbstractBuilder{ private Computer computer = new Computer(); @Override public void buildMainboard() { computer.setMainboard("华为主板"); } @Override public void buildHardDisk() { computer.setHardDisk("华为硬盘"); } @Override public void buildCPU() { computer.setCPU("华为CPU"); } @Override public Computer buildComputer() { return computer; } }
/** * 建造者 */ public class Director { public static Computer construct(AbstractBuilder builder){ builder.buildMainboard(); builder.buildHardDisk(); builder.buildCPU(); return builder.buildComputer(); } }
测试小程序:
public class Test { public static void main(String[] args){ Computer com = Director.construct(new AppleBuilder()); System.out.println(com); Computer com1 = Director.construct(new HuaWeiBuilder()); System.out.println(com1); } }
运行结果: