设计模式 之工厂方法模式

March 22, 2016

设计模式与设计原则

设计模式 2-2 工厂方法模式

工厂方法模式是创建型模式,定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。相比简单工厂模式要稍微复杂一点。

定义

Define an interface for creating an object,but let subclass decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses .
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

工厂方法模式四要素

  • 工厂接口。工厂接口是工厂方法模式的核心,与调用者直接交互用来提供产品。在实际编程中,有时候也会使用一个抽象类来作为与调用者交互的接口,其本质上是一样的。
  • 工厂实现。在编程中,工厂实现决定如何实例化产品,是实现扩展的途径,需要有多少种产品,就需要有多少个具体的工厂实现。
  • 产品接口。产品接口的主要目的是定义产品的规范,所有的产品实现都必须遵循产品接口定义的规范。产品接口是调用者最为关心的,产品接口定义的优劣直接决定了调用者代码的稳定性。同样,产品接口也可以用抽象类来代替,但要注意最好不要违反里氏替换原则。
  • 产品实现。实现产品接口的具体类,决定了产品在客户端中的具体行为。

与简单工厂模式的区别

  • 多了一个工厂接口
  • 具体产品类的实例化在工厂接口的子类,也就是工厂实现类中完成。
  • 有多个具体工厂具体实现

在简单工厂模式中,一个工厂要负责生产 N 多种产品,但是产品实在太多了,一个工厂忙不过来,于是就多了一个工厂的接口,然后就可以有多个工厂的实现了。有的工厂负责生产面包,有的工厂生产牛奶。

23种设计模式:
http://blog.binkery.com/pattern_and_principle/design_pattern/summary.html

--- EOF ---

添加新评论