Java语言工厂方法创立性模式介绍 - 编程入门网
何一个,见下面的位图
Java语言工厂方法创立性模式介绍(3)时间:2010-12-17由实工厂1(横数轴上第一点)创立的对象来自实产品类(1,1), (1,2), (1,3),...。由实工厂2(横数轴上第二点)创立的对象来自实产品类(2,1), (2,2), (3,3),...。依此类推 工厂方法模式和简单工厂模式在定义上的不同是很明显的。工厂方法模式的核心是一个抽象工厂类,而不像简单工厂模式, 把核心放在一个实类上。工厂方法模式可以允许很多实的工厂类从抽象工厂类继承下来, 从而可以在实际上成为多个简单工厂模式的综合,从而推广了简单工厂模式。 反过来讲,简单工厂模式是由工厂方法模式退化而来。设想如果我们非常确定一个系统只需要一个实的工厂类, 那么就不妨把抽象工厂类合并到实的工厂类中去。而这样一来,我们就退化到简单工厂模式了。 与简单工厂模式中的情形一样的是,ConcreteCreator 的factory() 方法返还的数据类型是一个接口 PlantIF,而不是哪一个具体的产品类。这种设计使得工厂类创立哪一个产品类的实例细节完全封装在工厂类内部。 工厂方法模式又叫多形性工厂模式,显然是因为实工厂类都有共同的接口,或者都有共同的抽象父类。 工厂方法模式在小花果园系统中的实现 好了,现在让我们回到小花果园的系统里,看一看怎样发挥工厂方法模式的威力,解决需要接连不断向小花果园引进不同类别的植物所带来的问题。 首先,我们需要一个抽象工厂类,比如叫做 Gardener,作为两个实工厂类 FruitGardener 及 VeggieGardener 的父类。 Gardener 的 factory() 方法可以是抽象的,留给子类去实现,也可以是实的,在父类实现一部分功能,再在子类实现剩余的功能。我们选择将 factory() 做成抽象的,主要是因为我们的系统是一个示范系统,内容十分简单,没有要在父类实现的任何功能。 图5. 工厂方法模式在小花果园系统中的实现 抽象工厂类 Gardener 是工厂方法模式的核心,但是它并不掌握水果类或蔬菜类的生杀大权。相反地,这项权力被交给子类,即 VeggieGardener 及 FruitGardener。
代码清单1. 父类 Gardener。
Java语言工厂方法创立性模式介绍(4)时间:2010-12-17代码清单2. 子类 VeggieGardener。
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |