首先理解类模式与对象模式的定义:
类模式:处理类与子类的关系,关系通过继承建立,在编译时就被确定了,是静态的。
对象模式:处理对象之间的关系,这些关系在运行时变化,更具动态性。
工厂方法模式的定义中说,将类的实例化操作延迟到子类中完成。返回一个子类对象看似是对象型模式,但是我们来看看工厂方法模式的类图:
Factory Method将对象的部分创建工作延迟到子类,用户可以通过Creator的工厂方法参数化来决定自己要实例化的类对象,即当你的具体工厂创建以后你就知道了你的子类实例化,在编译时就已将确定是静态的。
通过课本的实例可以更好地理解:
HairTVFactory创建后他只能创建HairTV。
再来看看抽象工厂的类图:
抽象工厂, 可以通过抽象工厂中的一个抽象接口来对一系列相同风格的产品进行实例化, 当然各种不同风格的产品都对应一个抽象工厂, 只不过这些抽象工厂都有一个统一的接口, 那么用户则可以通过实例化一个抽象工厂(即先要得到抽象工厂的对象), 把用户想要的产品通过该对象的来实例化出来,通过抽象工厂来实例化产品是在程序运行期间决定的,他是动态的.
一个侧重类,一个侧重接口;一个在写类的代码时就决定了全部内容,一个只能在类的实例化时才能确定全部内容。