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

2014-11-24 10:53:16 · 作者: · 浏览: 0

@@@模式定义:
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

@@@练习示例:
选择组装电脑的配件。

@@@示例代码:
src\computer\CPUApi.java

~~~~~~~~~~~~~~~~~~~~~~~~


[java]
package computer;
/**
* CPU的接口
*/
public interface CPUApi {
/**
* 示意方法,CPU具有运算的功能
*/
public void calculate();
}

package computer;
/**
* CPU的接口
*/
public interface CPUApi {
/**
* 示意方法,CPU具有运算的功能
*/
public void calculate();
}
src\computer\IntelCPU.java

~~~~~~~~~~~~~~~~~~~~~~~~~~

[java]
package computer;

/**
* Intel的CPU实现
*/
public class IntelCPU implements CPUApi {
/**
* CPU的针脚数目
*/
private int pins = 0;

/**
* 构造方法,传入CPU的针脚数目
* @param pins CPU的针脚数目
*/
public IntelCPU(int pins) {
this.pins = pins;
}

public void calculate() {
System.out.println("now in Intel CPU, pins=" + pins);
}
}

package computer;

/**
* Intel的CPU实现
*/
public class IntelCPU implements CPUApi {
/**
* CPU的针脚数目
*/
private int pins = 0;

/**
* 构造方法,传入CPU的针脚数目
* @param pins CPU的针脚数目
*/
public IntelCPU(int pins) {
this.pins = pins;
}

public void calculate() {
System.out.println("now in Intel CPU, pins=" + pins);
}
}src\computer\AMDCPU.java
~~~~~~~~~~~~~~~~~~~~~~~~

[java]
package computer;

/**
* AMD的CPU实现
*/
public class AMDCPU implements CPUApi {
/**
* CPU的针脚数目
*/
private int pins = 0;

/**
* 构造方法,传入CPU的针脚数目
* @param pins CPU的针脚数目
*/
public AMDCPU(int pins) {
this.pins = pins;
}

public void calculate() {
System.out.println("now in AMD CPU, pins=" + pins);
}
}

package computer;

/**
* AMD的CPU实现
*/
public class AMDCPU implements CPUApi {
/**
* CPU的针脚数目
*/
private int pins = 0;

/**
* 构造方法,传入CPU的针脚数目
* @param pins CPU的针脚数目
*/
public AMDCPU(int pins) {
this.pins = pins;
}

public void calculate() {
System.out.println("now in AMD CPU, pins=" + pins);
}
}src\computer\MainBoardApi.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[java]
package computer;

/**
* 主板的接口
*/
public interface MainBoardApi {
/**
* 示意方法,主板具有安装CPU的功能
*/
public void installCPU();
}

package computer;

/**
* 主板的接口
*/
public interface MainBoardApi {
/**
* 示意方法,主板具有安装CPU的功能
*/
public void installCPU();
}src\computer\GAMainBoard.java
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[java]
package computer;

/**
* 技嘉的主板实现
*/
public class GAMainBoard implements MainBoardApi {
/**
* CPU插槽的孔数
*/
private int cpuHoles = 0;

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

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

package computer;

/**
* 技嘉的主板实现
*/
public class GAMainBoard implements MainBoardApi {
/**
* CPU插槽的孔数
*/
private int cpuHoles = 0;

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

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

[java]
package computer;

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

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