您现在的位置:首页 > >

设计模式之工厂方法模式

发布时间:

设计模式之工厂方法模式(Factory Method)的一些看法 2010-09-03 21:11 1.描述: 客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消 费者者无须修改就可以接纳新产品。 2.类图和代码: 略 3.简要说明: 工厂方法模式一般包含以下三个部 分 A.抽象产品类(abstract class Product)或者产品接口(interface Product), 具有产品的各项属性和相关操作。 B.具体产品类。如 class Food\class Clothes。具体实现抽象产品类或接口中 的方法。 C.工厂类。这里不是抽象类(不过有的关于工厂方法模式的文章中有一个抽象工 厂类或者工厂接口,然后有一个具体工厂类或者实现工厂接口的类,我这样也可 以)。里面有生产各种产品的方法(即获得各个产品类的实 例)。 调用过程关键代码: Factory factory = new Factory(); Product food = factory.produce("Food"); //根据产品类别(String) 来生产出相应的产品 Product clothes = factory.produce("Clothes"); 由上述代码可以看出,不同于抽象工厂模式,工厂方法模式中只要创建一个工厂 的实例即可以完成各种产品的生产工作。 工厂方法模式与抽象工厂模式的比较: 网上关于抽象工厂模式和工厂方法模式的场景有一个开车的例子 (爆发富有很多 车,每辆车都有一个司机,爆发富每天坐不同车……)。不过我个人构造的场景 是这样的。 抽象工厂模式的场景是一个总公司下有很多分公司 (每个分公司一般只负责生产 一种产品),每当有客户需要某些产品时,只需要将订单交给总公司,再由总公 司派发给合适的分公司进行生产。

而工厂方法模式的场景可以理解为一个规模、实力不是那么雄厚的通用型公司, 它没有分公司(随着壮大,它也有发展成为上面公司模式的潜力),但它可以生 产各种各样的产品。同样客户也只需要将所有订单交给它,它就加班加点努力按 照订单量生产相应的产品。 总而言之,抽象工厂模式和工厂模式都是用来创建实例的。但是一般工厂方法模 式是抽象工厂模式的一个特例。 且一般抽象工厂模式的扩展性也相对工厂方法模 式来说更好。



热文推荐
猜你喜欢
友情链接: 医学资料大全 农林牧渔 幼儿教育心得 小学教育 中学 高中 职业教育 成人教育 大学资料 求职职场 职场文档 总结汇报