城市猎人

在一网情深的日子里,谁能说得清是苦是甜,只知道确定了就义无反顾
posts - 1, comments - 7, trackbacks - 0, articles - 89

模式(四-2):工厂方法(Factrory Method)模式

Posted on 2008-07-22 10:49 sailor 阅读(185) 评论(0)  编辑  收藏 所属分类: 模式

定义

    定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。

原则

    依赖抽象,不依赖具体实现(依赖倒装)
            工厂方法使用继承,把对象的创建委托给子类,子类实现工厂方法来创建对象。这个原则说明了不能让高层组件依赖底层组件,而且,高层组件和底层组件都应该依赖于抽象。

角色

工厂方法类图
从上图可以看出,工厂方法模式涉及到以下的角色

抽象工厂接口(Creator)
 
     担任这个角色的是工厂方法的核心,它是与应用程序无关,创建的工厂类必须实现该接口。
实工厂类 (Conrete Creator)
     担任这个角色的是与应用程序紧密相关的,直接在程序的调用下创建具体的产品。
产品 (Product)
     担任这个角色的是工厂方法模式所创建对象的父类,或者是必须实现的接口。
实产品 (Concrete Product)
   担任这个角色的是工厂方法模式所创建对象所属的类。

    工厂方法模式和简单工厂模式在定义上的不同是很明显的。工厂方法模式的核心是一个抽象工厂类,而不像简单工厂模式, 把核心放在一个实类上。工厂方法模式可以允许很多实的工厂类从抽象工厂类继承下来, 从而可以在实际上成为多个简单工厂模式的综合,从而推广了简单工厂模式。
    反过来讲,简单工厂模式是由工厂方法模式退化而来。设想如果我们非常确定一个系统只需要一个实的工厂类, 那么就不妨把抽象工厂类合并到实的工厂类中去。而这样一来,我们就退化到简单工厂模式了。
   工厂方法模式又叫多形性工厂模式,显然是因为实工厂类都有共同的接口,或者都有共同的抽象父类。

实例:(略)
    
参考资料:《First Head 设计模式》
                    《菜鸟学设计模式-------工厂方法(Factory Method)模式



只有注册用户登录后才能发表评论。


网站导航: