分类: Java
2011-11-15 15:32:20
简单工厂:
简单工厂就是由一个工厂类根据传入的参量决定创建出哪一种产品类得实例.
工厂模式涉及角色:
工厂角色,抽象产品角色,具体产品角色。
工厂类角色:
担任这个角色的是工厂方法的核心,含有与应用紧密相关的商业逻辑。 工厂类在客户端的直接调用下创建产品对象,它往往由一个java 具体类实现。
抽象产品角色:
担任这个角色的类是由工厂方法模式创建的对象的父类,或他们共同拥有的接口,抽象产品角色可以用一个java 接口或者java 抽象类实现。
具体产品角色:
工厂方法模式所创建的任何对象都是这个角色的实例,具体产品角色由一个具体java 类实现。
优点:
客户端避免直接创建产品角色的责任,而仅仅负责”消费产品” ,简单工厂模式通过这种做法实现了对责任的分割。
缺点:
当产品类有不同接口种类时候,工厂类需要判断什么时候创建某种产品,这种对时机的判断和对哪一种具体产品的判断逻辑混合在一起,使得系统在将来进行功能扩展时候较为困难。
还有由于简单工厂使用静态工厂方法,而静态方法无法由子类继承,因此,工厂角色无法形成于基于继承的等级结构。
开闭原则:
对于产品消费角色来说,任何时候需要某种产品,只要向工厂申请即可, 而工厂角色接到请求后,会自行判断创建和提供哪一个产品,所以产品消费角色无需知道它得到是哪一个产品。 产品消费角色无需修改便可添加新的产品。
对于工厂角色,增加新的产品必须修改这个工厂角色的源代码。