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