Posted on 2008-07-22 10:49
sailor 阅读(185)
评论(0) 编辑 收藏 所属分类:
模式
定义
定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
原则
依赖抽象,不依赖具体实现(依赖倒装)
工厂方法使用继承,把对象的创建委托给子类,子类实现工厂方法来创建对象。这个原则说明了不能让高层组件依赖底层组件,而且,高层组件和底层组件都应该依赖于抽象。
角色
从上图可以看出,工厂方法模式涉及到以下的角色
抽象工厂接口(Creator)
担任这个角色的是工厂方法的核心,它是与应用程序无关,创建的工厂类必须实现该接口。
实工厂类 (Conrete Creator)
担任这个角色的是与应用程序紧密相关的,直接在程序的调用下创建具体的产品。
产品 (Product)
担任这个角色的是工厂方法模式所创建对象的父类,或者是必须实现的接口。
实产品 (Concrete Product)
担任这个角色的是工厂方法模式所创建对象所属的类。
工厂方法模式和简单工厂模式在定义上的不同是很明显的。工厂方法模式的核心是一个抽象工厂类,而不像简单工厂模式, 把核心放在一个实类上。工厂方法模式可以允许很多实的工厂类从抽象工厂类继承下来, 从而可以在实际上成为多个简单工厂模式的综合,从而推广了简单工厂模式。
反过来讲,简单工厂模式是由工厂方法模式退化而来。设想如果我们非常确定一个系统只需要一个实的工厂类, 那么就不妨把抽象工厂类合并到实的工厂类中去。而这样一来,我们就退化到简单工厂模式了。
工厂方法模式又叫多形性工厂模式,显然是因为实工厂类都有共同的接口,或者都有共同的抽象父类。
实例:(略)
参考资料:《First Head 设计模式》
《
菜鸟学设计模式-------工厂方法(Factory Method)模式 》