意图:定义了一个创建对象的接口,但由子类决定要实例化哪个类。工厂方法把实例化操作推迟到子类。
工厂方法和简单工厂的区别:简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。相当于是一个工厂中有各种产品,这样工厂的职责较重,而且当产品类型过多时不利于系统的扩展维护。如果增加一类产品,必须修改工厂类的方法。而工厂方法提供了一个工厂接口,定义了许多工厂实现类来负责生产不同的产品,这样如果想要增加一类产品只需定义一个新的工厂实现类即可。且简单工厂返回产品的方法为static的,因为简单工厂不需要创建工厂实例,而工厂方法要创建工厂实例。
工厂模式的实际应用:
JDBC中Connection的创建
特定的Driver创建对应的connection。
Spring的Bean管理
实现
在简单工厂中,创建对象的是另一个类,而在工厂方法中,是由子类来创建对象。
下图中,Factory 有一个 doSomething() 方法,这个方法需要用到一个产品对象,这个产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。
Factory.java
public abstract class Factory {
abstract public Product factoryMethod();
public void doSomething() {
Product product = factoryMethod();
// do something with the product
}
}
ConcreteFactory.java
public class ConcreteFactory extends Factory {
public Product factoryMethod() {
return new ConcreteProduct();
}
}
BrickFactory.java
public class BrickFactory extends Factory {
public Product factoryMethod() {
return new Brick();
}
}
SteelFactory.java
public class SteelFactory extends Factory {
public Product factoryMethod() {
return new Steel();
}
}
参考链接:https://www.jianshu.com/p/c71e5b13b263
视频审核中.....后面上传
原文:https://www.cnblogs.com/lyt96/p/12587876.html