一.概念
定义了创建对象的接口,但有子类决定要实例化的类是哪一个。工厂方法把类实例化推迟到了子类(这个是GOF上的定义,总感觉定义的不好)。
二.实例分析
CPU
package com.zzy.factoryMethod;
/**
* CPU接口
* @author eason
*
*/
public interface CPU {
public void work();
}
WDCPU/SamSungCPU/SeagateCPU类似,只贴出一个
package com.zzy.factoryMethod;
/**
* 西数CPU
* @author eason
*
*/
public class WDCPU implements CPU{
@Override
public void work() {
System.out.println("西数CPU is working...");
}
}
WDCPUFactory/SamSungCPUFactory/SeagateCPUFactory类似,只贴出一个
package com.zzy.factoryMethod;
/**
* 三星CPU工厂
* @author eason
*
*/
public class WDCPUFactory implements CPUFactory{
public CPU createCPU() {
return new WDCPU();
}
}
TestFactoryMethod
package com.zzy.factoryMethod;
/**
* 测试类
* @author eason
*
*/
public class TestFactoryMethod {
public static void main(String[] args) {
CPUFactory factory = new WDCPUFactory();
CPU cpu = factory.createCPU();
cpu.work();
}
}
三.工厂方法模式的产品等级与产品族
- 工厂模式:用来生产同一等级结构中的固定产品。
-
工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。