本文共 4716 字,大约阅读时间需要 15 分钟。
?????????CPU???
1.1 CPU
Intel?CPU???
public class IntelCPU implements CPUApi { private int pins = 0; public IntelCPU(int pins) { this.pins = pins; } public void calculate() { System.out.println("now in Intel CPU,pins=" + pins); }} AMDCPU?
public class AMDCPU implements CPUApi { private int pins = 0; public AMDCPU(int pins) { this.pins = pins; } public void calculate() { System.out.println("now in AMD CPU,pins=" + pins); }} 1.2 ??
??????
public interface MainboardApi { public void installCPU();} ?????
public class GAMainboard implements MainboardApi { private int cpuHoles = 0; public GAMainboard(int cpuHoles) { this.cpuHoles = cpuHoles; } public void installCPU() { System.out.println("now in GAMainboard,cpuHoles=" + cpuHoles); }} ?????
public class MSIMainboard implements MainboardApi { private int cpuHoles = 0; public MSIMainboard(int cpuHoles) { this.cpuHoles = cpuHoles; } public void installCPU() { System.out.println("now in MSIMainboard,cpuHoles=" + cpuHoles); }} 1.3 ??CPU??????
??CPU??????
public class CPUFactory { public static CPUApi createCPUApi(int type) { CPUApi cpu = null; if (type == 1) { cpu = new IntelCPU(1156); } else if (type == 2) { cpu = new AMDCPU(939); } return cpu; }} ??????????
public class MainboardFactory { public static MainboardApi createMainboardApi(int type) { MainboardApi mainboard = null; if (type == 1) { mainboard = new GAMainboard(1156); } else if (type == 2) { mainboard = new MSIMainboard(939); } return mainboard; }} 1.4 ???
public class ComputerEngineer { private CPUApi cpu = null; private MainboardApi mainboard = null; public void makeComputer(int cpuType, int mainboardType) { prepareHardwares(cpuType, mainboardType); // ???? // ???? // ???? } private void prepareHardwares(int cpuType, int mainboardType) { this.cpu = CPUFactory.createCPUApi(cpuType); this.mainboard = MainboardFactory.createMainboardApi(mainboardType); this.cpu.calculate(); this.mainboard.installCPU(); }} client?
public static void main(String[] args) { ComputerEngineer engineer = new ComputerEngineer(); engineer.makeComputer(1, 2);} ??????????
public interface AbstractFactory { public AbstractProductA createProductA(); public AbstractProductB createProductB();} public class Schema1 implements AbstractFactory { public CPUApi createCPUApi() { return new IntelCPU(1156); } public MainboardApi createMainboardApi() { return new GAMainboard(1156); }} public class ComputerEngineer { private CPUApi cpu = null; private MainboardApi mainboard = null; private MemoryApi memory = null; public void makeComputer(AbstractFactory schema) { prepareHardwares(schema); // ???? // ???? // ???? } private void prepareHardwares(AbstractFactory schema) { this.cpu = (CPUApi) schema.createProduct(1); this.mainboard = (MainboardApi) schema.createProduct(2); this.memory = (MemoryApi) schema.createProduct(3); this.cpu.calculate(); this.mainboard.installCPU(); if (memory != null) { this.memory.cacheData(); } }} public class Schema3 implements AbstractFactory { public Object createProduct(int type) { Object retObj = null; if (type == 1) { retObj = new IntelCPU(1156); } else if (type == 2) { retObj = new GAMainboard(1156); } else if (type == 3) { retObj = new HyMemory(); } return retObj; }} public class ComputerEngineer { private CPUApi cpu = null; private MainboardApi mainboard = null; private MemoryApi memory = null;
public void makeComputer(AbstractFactory schema) { prepareHardwares(schema); // ???? // ???? // ????}private void prepareHardwares(AbstractFactory schema) { this.cpu = (CPUApi) schema.createProduct(1); this.mainboard = (MainboardApi) schema.createProduct(2); this.memory = (MemoryApi) schema.createProduct(3); this.cpu.calculate(); this.mainboard.installCPU(); if (memory != null) { this.memory.cacheData(); }} }
public static void main(String[] args) { ComputerEngineer engineer = new ComputerEngineer(); AbstractFactory schema = new Schema3(); engineer.makeComputer(schema); }
??????????????????????????????????????????????????
转载地址:http://gvq.baihongyu.com/