设计模式2--工厂方法模式(Factory Method)
2013-11-27 16:19
330 查看
工厂方法模式的本质:延迟到子类来选择实现
从本质上讲,它们确实是非常类似的,在具体的实现上都是“选择实现”。但是也存在不同点,简单工厂是直接在工厂类里面进行“选择实现”;而工厂方法会把这个工作延迟大盘子类来实现,工厂类里面使用工厂方法的地方是依赖于抽象而不是具体的实现,从而使得系统更加灵活,具有更好的维护性和可扩展性。
从某个角度来讲,可以认为简单工厂就是工厂方法模式的一种特例,因此它们的本质是类似的,也就不足为奇了。
建议在以下情况中选用工厂方法模式:
1 如果一个类需要创建某个接口的对象,但是又不知道具体的实现,这种情况下可以选用工厂方法模式,把创建对象的工作延迟到子类去实现。
2 如果一个类本身就希望由他的子类来创建所需要的对象的时候,应该使用工厂方法模式。
package com; public interface Api { void opreation(String s); }
package com.impl; import com.Api; public class ImplA implements Api { @Override public void opreation(String s) { System.out.println("我是A的实现:" + s); } }
package com.impl; import com.Api; public class ImplB implements Api { @Override public void opreation(String s) { System.out.println("我是B的实现:" + s); } }
import com.Api; public abstract class AbstractFactory { public void opreation(String s){ Api api = factoryMethed(); api.opreation(s); } protected abstract Api factoryMethed(); }
import com.Api; import com.impl.ImplA; public class FactoryA extends AbstractFactory{ protected Api factoryMethed(){ return new ImplA(); } }
import com.Api; import com.impl.ImplB; public class FactoryB extends AbstractFactory{ protected Api factoryMethed(){ return new ImplB(); } }
public class Client { public static void main(String[] args){ AbstractFactory fA = new FactoryA(); fA.opreation("SHIXIN"); AbstractFactory fB = new FactoryB(); fB.opreation("AXUE"); } }
从本质上讲,它们确实是非常类似的,在具体的实现上都是“选择实现”。但是也存在不同点,简单工厂是直接在工厂类里面进行“选择实现”;而工厂方法会把这个工作延迟大盘子类来实现,工厂类里面使用工厂方法的地方是依赖于抽象而不是具体的实现,从而使得系统更加灵活,具有更好的维护性和可扩展性。
从某个角度来讲,可以认为简单工厂就是工厂方法模式的一种特例,因此它们的本质是类似的,也就不足为奇了。
建议在以下情况中选用工厂方法模式:
1 如果一个类需要创建某个接口的对象,但是又不知道具体的实现,这种情况下可以选用工厂方法模式,把创建对象的工作延迟到子类去实现。
2 如果一个类本身就希望由他的子类来创建所需要的对象的时候,应该使用工厂方法模式。
相关文章推荐
- 【java设计模式系列】1. 工厂方法模式(Factory Method)
- 设计模式-工厂方法模式(Factory Method)
- 面向对象的设计模式系列之二:工厂方法模式(FactoryMethod)
- 【转载】.NET设计模式之工厂方法模式(Factory Method)
- 漫谈设计模式之工厂方法模式(Factory Method)
- 设计模式——工厂方法模式(Factory Method)
- 步步为营 .NET 设计模式学习笔记 二十四、Factory Method(工厂方法模式)
- [设计模式]第二回:工厂方法模式(Factory Method)
- java23种常用设计模式之工厂方法模式(Factory Method)
- 设计模式初探-工厂方法模式(Factory Method)
- 设计模式之工厂方法模式(Factory Method)
- .NET设计模式(5):工厂方法模式(Factory Method)
- 设计模式——工厂方法模式(FactoryMethod)和抽象工厂模式(Abstract Factory)
- Android设计模式——工厂方法模式(Factory Method)
- 设计模式(Design Patterns)--工厂方法模式(Factory Method)
- .NET设计模式(5):工厂方法模式(Factory Method)(转)
- 设计模式之一---工厂方法模式【Factory Method模式】
- [设计模式]工厂方法模式(factory method)
- 设计模式学习(创建型模式)—工厂方法模式(Factory Method)
- Java设计模式-工厂方法模式(Factory Method)