定义:
定义一个用于创建对象的接口,让子类来决定实例化哪一个类。工厂方法使一个类的实例化延迟到子类。
它是简单工厂模式的一种延伸。
例子:
Spring中ApplicationContext的getBean方法就是典型的工厂方法模式。
工厂方法的通用代码:
产品抽象类
package _2FactoryMethodPattern;
public abstract class Product {
public void method1()
{
//处理业务逻辑
}
public abstract void method2();
}
产品实现类1
package _2FactoryMethodPattern;
public class SubProduct1 extends Product {
@Override
public void method2()
{
}
}
产品实现类2
package _2FactoryMethodPattern;
public class SubProduct2 extends Product {
@Override
public void method2()
{
}
}
工厂接口类
package _2FactoryMethodPattern;
public interface IProductFactory {
public <T extends Product> T createProduct(Class<T> c);
}
工厂实现类
package _2FactoryMethodPattern;
public class ProductFactory implements IProductFactory {
@SuppressWarnings("unchecked")
@Override
public <T extends Product> T createProduct(Class<T> c) {
Product p = null;
try {
p = (Product)Class.forName(c.getName()).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return (T)p;
}
}
client类
package _2FactoryMethodPattern;
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
IProductFactory factory = new ProductFactory();
Product product = factory.createProduct(SubProduct1.class);
// 继续业务逻辑
}
}
工厂方法模式的优点:
- 良好的封装性,代码结构清晰
- 工厂方法模式的扩张性非常优秀
- 屏蔽产品类
- 工厂方法模式是典型的解耦框架
工厂方法模式的应用场景
- 工厂方法模式是new一个对象的替代品,所以在需要生成对象的地方都可以使用,但是需要慎重的考虑是否需要增加一个工厂类进行管理,增加代码的复杂度。
- 需要灵活的、可扩展的框架时,可以考虑使用工厂方法模式。
- 可以使用在测试驱动开发的框架下。例如,测试一个类A,就需要把与类A有关联的类B也同时产生出来,我们可以使用工厂方法模式把类B虚拟出来,避免A和B的耦合。
分享到:
相关推荐
很简单的一个例子 博文链接:https://schnauzer.iteye.com/blog/111889
2、工厂方法模式(Factory Method Pattern) 用意:让每个具体工厂生产具体产品
C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method)
设计模式C++学习之工厂方法模式(Factory Method)
C++设计模式课件8_Factory Method_工厂方法.pdf
Factory Method 工厂方法模式(创建型模式).wmv
2. 工厂方法模式(Factory Method) 3. 抽象工厂模式(Abstract Factory) 这三种模式从上到下逐步抽象,并且更具一般性。还有一种分类法,就是将简单工厂模式看为工厂方法模式的一种特例,两个归为一类。下面是使用...
它们都是由不同的厂家生产的,这就是工厂方法模式(FactoryMethod)与前面所说的简单工厂模式(SimpleFactory)的差别。 实例: 多文档系统。我已经用C#的源码编程了:请下载Factory Method Patter.rar
C#面向对象设计模式纵横谈:Factory Method 工厂方法模式(创建型模式)
工厂方法模式(Factory Method) 5. 原型模式(Prototype)结构型: 6. 适配器模式(Adapter Pattern) 7. 桥接模式(Bridge Pattern) 8. 装饰模式(Decorator Pattern) 9. 组合模式(Composite Pattern) 10. 外观模式...
工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器模式(Adapter Pattern) 7. 桥接模式(Bridge Pattern) 8. 装饰模式(Decorator Pattern) 9. 组合模式(Composite Pattern) 10...
2. 简单工厂模式 (SimpleFactoryPattern) 3. 工厂方法模式 (Factory Method) 4. 单例模式 (Singleton) 5. 抽象工厂模式 (Abstract Factory) 6. 策略模式 (Strategy Pattern) 7. 适配器模式 (Adapter ...
4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器模式(Adapter Pattern) 7. 桥接模式(Bridge Pattern) 8. 装饰模式(Decorator Pattern) 9. 组合模式(Composite Pattern...
工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器模式(Adapter Pattern) 7. 桥接模式(Bridge Pattern) 8. 装饰模式(Decorator Pattern) 9. 组合模式(Composite Pattern) 10...
C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式) (Level 300)
1. 工厂模式(Factory Method) 2 2. 抽象工厂模式(Abstract Factory) 3 3. 单例模式(Singleton) 4 4.建造者模式(Builder) 4 5. 原型模式(Protype) 5 6.适配器模式(Adapter) 6 7.装饰模式(Decorator) 6 ...
FACTORY METHOD(工厂方法)
NULL 博文链接:https://zhouhaitao.iteye.com/blog/1003702
NULL 博文链接:https://lym6520.iteye.com/blog/698013
工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器模式(Adapter Pattern) 7. 桥接模式(Bridge Pattern) 8. 装饰模式(Decorator Pattern) 9. 组合模式...