抽象工厂模式(Abstract Factory) (二)

2014-11-24 10:53:16 · 作者: · 浏览: 1
Holes = cpuHoles;
}

public void installCPU() {
System.out.println("now in MSIMainBoard, cpuHoles=" + cpuHoles);
}
}

package computer;

/**
* 微星的主板实现
*/
public class MSIMainBoard implements MainBoardApi {
/**
* CPU插槽的孔数
*/
private int cpuHoles = 0;

/**
* 构造方法, 传入CPU插糟的孔数
*/
public MSIMainBoard(int cpuHoles) {
this.cpuHoles = cpuHoles;
}

public void installCPU() {
System.out.println("now in MSIMainBoard, cpuHoles=" + cpuHoles);
}
}src\computer\CPUFactory.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~


[java]
package computer;

/**
* 创建CPU的简单工厂
*/
public class CPUFactory {
/**
* 创建CPU接口对象的方法
* @param type 选择CPU类型的参数
* @return CPU接口对象
*/
public static CPUApi createCPUApi(int type) {
CPUApi cpu = null;

// 根据参数来选择并创建相应的CPU对象
if (1 == type) {
cpu = new IntelCPU(1156);
} else if (2 == type) {
cpu = new AMDCPU(939);
}

return cpu;
}
}

package computer;

/**
* 创建CPU的简单工厂
*/
public class CPUFactory {
/**
* 创建CPU接口对象的方法
* @param type 选择CPU类型的参数
* @return CPU接口对象
*/
public static CPUApi createCPUApi(int type) {
CPUApi cpu = null;

// 根据参数来选择并创建相应的CPU对象
if (1 == type) {
cpu = new IntelCPU(1156);
} else if (2 == type) {
cpu = new AMDCPU(939);
}

return cpu;
}
}src\computer\MainBoardFactory.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


[java]
package computer;

/**
* 创建主板的简单工厂
*/
public class MainBoardFactory {
/**
* 创建主板接口对象的方法
* @param type 选择主板类型的参数
* @return 主板接口对象
*/
public static MainBoardApi createMainBoardApi(int type) {
MainBoardApi mainBoard = null;

// 根据参数来选择并创建相应的主板对象
if (1 == type) {
mainBoard = new GAMainBoard(1156);
} else if (2 == type) {
mainBoard = new MSIMainBoard(939);
}

return mainBoard;
}
}

package computer;

/**
* 创建主板的简单工厂
*/
public class MainBoardFactory {
/**
* 创建主板接口对象的方法
* @param type 选择主板类型的参数
* @return 主板接口对象
*/
public static MainBoardApi createMainBoardApi(int type) {
MainBoardApi mainBoard = null;

// 根据参数来选择并创建相应的主板对象
if (1 == type) {
mainBoard = new GAMainBoard(1156);
} else if (2 == type) {
mainBoard = new MSIMainBoard(939);
}

return mainBoard;
}
}src\computer\ComputerEngineer.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


[java]
package computer;

/**
* 装机工程师类
*/
public class ComputerEngineer {
/**
* 组装机器需要的CPU
*/
private CPUApi cpu = null;

/**
* 组装机器需要的主板
*/
private MainBoardApi mainBoard= null;

/**
* 装机过程
* @param cpuType 客户选择所需的CPU类型
* @param mainBoardType 客户选择所需的主板类型
*/
public void makeComputer(int cpuType, int mainBoardType) {
// 1: 首先准备好装机所需要的配件
prepareHardwares(cpuType, mainBoardType);
// 2: 组装机器
// 3: 测试机器
// 4: 交付客户
}

/**
* 准备装机所需要的配件
* @param cpuType 客户选择所需的CPU类型
* @param mainBoardType 客户选择所需的主板类型
*/
public void prepareHardwares(int cpuType, int mainBoardType) {
// 这里要去准备CPU和主板的具体实现,简单起见,这里只准备这两个
// 可是,装机工程师并不知道如何去创建,怎么办呢?

// 直接找相应的工厂获取
this.cpu = CPUFactory.createCPUApi(cpuType);
this.mainBoard = MainBoardFactory.createMainBoardApi(mainBoardT