Aha!设计模式(23)-工厂方法(4)

2019-04-13 13:29发布

5. 结 构 光从类图的角度来看,工厂方法和抽象工厂的类图都存在平行的product和creator(或factory)类,不同的是在工厂方法模式中:
  1. 每个creator只有一个构建方法。
  2. creator还会有构建方法以外的操作。
  3. 作为派生类的ConcretCreator/ConcreateProduct只有一套,也就意味着替换派生类不是这个模式的主要目的。

     
6. 参与者
• Product(Document)
— 定义工厂方法所创建的对象的接口。
• ConcreteProduct(MyDocument)
— 实现Product接口。
• Creator(Application)
— 声明工厂方法,该方法返回一个Product类型的对象。Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的 ConcreteProduct对象。
— 可以调用工厂方法以创建一个Product对象。
• ConcreteCreator(MyApplication)
— 重定义工厂方法以返回一个ConcreteProduct实例。
  工厂方法模式的核心参与者是Creator和ConcreteCreator,这两个Creator加上两个Product就构成了抽象工厂模式。   7. 协作
• Creator依赖于它的子类来定义工厂方法,所以它返回一个适当的ConcreteProduct实例。   出于主动的或者被动的原因,Creator类将构建某种产品的职责委托给子类。   作者观点   构建Product只是Creator的一部分功能,是副业。这一点很重要。   注:   本文中蓝 {MOD}粗体文字都引自《设计模式》一书。   觉得本文有帮助?请分享给更多人。 阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】