一.概念
定义了创建对象的接口,但有子类决定要实例化的类是哪一个。工厂方法把类实例化推迟到了子类(这个是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();
- }
- }
三.工厂方法模式的产品等级与产品族
- 工厂模式:用来生产同一等级结构中的固定产品。
-
工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。