Computer Model:
package com.ccl.factory; import java.util.LinkedList; import java.util.List; public class Computer { private List<CPU> cpus; private List<Memory> memorys; private int cpuNumber; private int memoryNumber; public Computer(int cpuNumber, int memoryNumber) { cpus = new LinkedList<CPU>(); memorys = new LinkedList<Memory>(); this.cpuNumber = cpuNumber; this.memoryNumber = memoryNumber; } public int getCpuNumber() { return cpuNumber; } public List<CPU> getCpus() { return cpus; } public int getMemoryNumber() { return memoryNumber; } public List<Memory> getMemorys() { return memorys; } public void setCpus(List<CPU> cpus) { this.cpus = cpus; } public void setMemorys(List<Memory> memorys) { this.memorys = memorys; } public String toString() { return "CPU:" + this.cpus + "\nMemory:" + this.memorys; } }
CPU:
package com.ccl.factory; public class CPU { public CPU() { System.out.println("new a CPU."); } public String toString() { return "CPU"; } }
Memory:
package com.ccl.factory; public class Memory { public Memory() { System.out.println("new a memory."); } public String toString() { return "Memory"; } }
以上都是扯蛋:
入正題:
package com.ccl.factory; public interface ComputerFactory { public void buildCPU(); public void buildMemory(); public Computer getComputer(); }
package com.ccl.factory; import java.util.LinkedList; import java.util.List; public class SimpleComputerFactoryImpl implements ComputerFactory { private Computer computer; public SimpleComputerFactoryImpl() { computer = new Computer(1, 2); } @Override public void buildCPU() { List<CPU> list = new LinkedList<CPU>(); for (int i = 0; i < this.computer.getCpuNumber(); i++) { list.add(new CPU()); } this.computer.setCpus(list); } @Override public void buildMemory() { List<Memory> list = new LinkedList<Memory>(); for (int i = 0; i < this.computer.getMemoryNumber(); i++) { list.add(new Memory()); } this.computer.setMemorys(list); } @Override public Computer getComputer() { return this.computer; } }
package com.ccl.factory; import java.util.LinkedList; import java.util.List; public class SimpleComputerFactoryImpl implements ComputerFactory { private Computer computer; public SimpleComputerFactoryImpl() { computer = new Computer(1, 2); } @Override public void buildCPU() { List<CPU> list = new LinkedList<CPU>(); for (int i = 0; i < this.computer.getCpuNumber(); i++) { list.add(new CPU()); } this.computer.setCpus(list); } @Override public void buildMemory() { List<Memory> list = new LinkedList<Memory>(); for (int i = 0; i < this.computer.getMemoryNumber(); i++) { list.add(new Memory()); } this.computer.setMemorys(list); } @Override public Computer getComputer() { return this.computer; } }
package com.ccl.factory; import java.util.LinkedList; import java.util.List; public class ComplexComputerFactoryImpl implements ComputerFactory { private Computer computer; public ComplexComputerFactoryImpl() { computer = new Computer(3, 6); } @Override public void buildCPU() { List<CPU> list = new LinkedList<CPU>(); for (int i = 0; i < this.computer.getCpuNumber(); i++) { list.add(new CPU()); } this.computer.setCpus(list); } @Override public void buildMemory() { List<Memory> list = new LinkedList<Memory>(); for (int i = 0; i < this.computer.getMemoryNumber(); i++) { list.add(new Memory()); } this.computer.setMemorys(list); } @Override public Computer getComputer() { return this.computer; } }
package com.ccl.factory; public class ComputerFactoryCompany { public ComputerFactoryCompany() { } public Computer build(ComputerFactory c) { c.buildCPU(); c.buildMemory(); return c.getComputer(); } }
Demo:
package com.ccl.factory; public class ComputerDemo { /** * @param args */ public static void main(String[] args) { ComputerFactoryCompany company = new ComputerFactoryCompany(); Computer computer = company.build(new SimpleComputerFactoryImpl()); System.out.println(computer); Computer newcomputer = company.build(new ComplexComputerFactoryImpl()); System.out.println(newcomputer); } }
作者:chengchanglun 發表于2012-4-10 11:51:01 原文鏈接
閱讀:4780 評論:0 查看評論