知对于新产品的加入,工厂类是很被动的。对于这样的工厂类(在我们的例
子中是为司机师傅),我们称它为全能类或者上帝类。
我们举的例子是最简单的情况,而在实际应用中,很可能产品是一个
多层次的树状结构。由于简单工厂模式中只有一个工厂类来对应这些产品,
所以这可能会把我们的上帝累坏了,也累坏了我们这些程序员:(
于是工厂方法模式作为救世主出现了。
四、工厂方法模式
工厂方法模式去掉了简单工厂模式中工厂方法的静态属性,使得它可
以被子类继承。这样在简单工厂模式里集中在工厂方法上的压力可以由工厂
方法模式里不同的工厂子类来分担。
你应该大致猜出了工厂方法模式的结构,来看下它的组成:
1)抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具
体工厂角色必须实现的接口或者必须继承的父类。在 java 中它由抽象类或
者接口来实现。
2)具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用
以创建对应的具体产品的对象。
3)抽象产品角色:它是具体产品继承的父类或者是实现的接口。在 java
中一般有抽象类或者接口来实现。
4)具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在
java 中由具体的类来实现。
工厂方法模式使用继承自抽象工厂角色的多个子类来代替简单工厂模式
中的“上帝类”。正如上面所说,这样便分担了对象承受的压力;而且这样使
得结构变得灵活起来——当有新的产品(即暴发户的汽车)产生时,只要按
评论0
最新资源