设计模式
工厂 (Factory )

工厂 (Factory )

简单工厂(Simple Factory)

在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口。

在 Spring 框架下的面向接口编程, 都属于简单工厂.

工厂方法(Factory Method)

定义了一个创建对象的接口,但由子类决定要实例化哪个类。工厂方法把实例化操作推迟到子类。

在简单工厂中,创建对象的是另一个类,而在工厂方法中,是由子类来创建对象。

下图中,Factory 有一个 doSomething() 方法,这个方法需要用到一个产品对象,这个产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。

抽象工厂(Abstract Factory)

抽象工厂模式创建的是对象家族,也就是很多对象而不是一个对象,并且这些对象是相关的,也就是说必须一起创建出来。 而工厂方法模式只是用于创建一个对象,这和抽象工厂模式有很大不同。

抽象工厂通常用于抽象出来通用的逻辑, 但不实例化的去执行具体的比如入库, 出库等操作. 这些具体的实例化等操作需要具体的实现类去做操作.

Spring 中的例子

FactoryBean