Factory Method & Abstrict Factory Method
这2个模式以前没注意区分,今天看了看文章,就从实例的角度来分析一下。
打个比方,我们现在要设计WAR3这个游戏。我们设定了暗夜族,现在创建暗夜兵种,兵分战士和农民。那么我们建一个兵工厂,我们选择力量>80,工厂就创建了战士,选择力量<30,工厂就创建了农民,我们完全不需要知道细节,工厂方法帮我们做了,这个兵工厂,他的作用就是工厂方法。
我们现在要增加一个种族兽族,如何做到最大的公用设计?很明显,兽族也要生产战士和农民,我们抽象出这个兵工厂,然后用暗夜工厂来创建暗夜的战士和农民,用兽工厂来创建兽人战士和农民,这就是抽象工厂。
这里要注意的是,在抽象工厂里,就不是像工厂方法一样用条件返回合适的对象了,他是创建的一个组合,代表了这个工厂出产的都是他的东西。兽族出产了兽族兵,兽族车,兽族英雄;那么对应了暗夜同样也可以生产暗夜兵,暗夜车,暗夜英雄。抽象工厂包含了工厂方法,比如暗夜兵和兽族兵都可以继承兵,那么兵在工厂方法里实现创建。