设计模式(二) : 创建型模式--简单工厂模式
2014-05-28 18:13
295 查看
简单工厂模式是属于创建型的模式,它是工厂类决定去创建哪一种类型的产品。个人觉得它不是一种设计模式,倒是像一种编程习惯。
下面看这个模式的类图(截自《java与模式》):
示意性代码就不贴在这边了,太简单了。当有多个ConcreteProduct的时候,Creator的factory方法可以有type参数,这样的话factory里面会出现一堆if, else,很容易出错。
解决的办法,我们可以有多个工厂方法,这样客户端决定调用哪个工厂方法。
--------静态工厂--------
上面的两种方法,我们在创建concreteproduct的时候,不可避免的去new了工厂类,所以有静态工厂方法,静态工厂方法的话就是工厂方法是静态的,这样我们在创建对象的时候就不用去new一个工厂类的实例了。
--------优缺点--------
优点:客户端免去了创建对象的责任交给工厂类负责,这样的话就实现了创建逻辑和业务逻辑的解耦。
缺点:工厂类中集中了所有product类的创建逻辑,这样的话,哪一天工厂类不能正常工作了,就忧桑了,还有就是如果我们要扩展新的创建逻辑,比如说有新的产品要加入了,哪个工厂类就需要修改,这不是一个好的创建逻辑,违反了”开闭原则“。
下面看这个模式的类图(截自《java与模式》):
示意性代码就不贴在这边了,太简单了。当有多个ConcreteProduct的时候,Creator的factory方法可以有type参数,这样的话factory里面会出现一堆if, else,很容易出错。
解决的办法,我们可以有多个工厂方法,这样客户端决定调用哪个工厂方法。
--------静态工厂--------
上面的两种方法,我们在创建concreteproduct的时候,不可避免的去new了工厂类,所以有静态工厂方法,静态工厂方法的话就是工厂方法是静态的,这样我们在创建对象的时候就不用去new一个工厂类的实例了。
--------优缺点--------
优点:客户端免去了创建对象的责任交给工厂类负责,这样的话就实现了创建逻辑和业务逻辑的解耦。
缺点:工厂类中集中了所有product类的创建逻辑,这样的话,哪一天工厂类不能正常工作了,就忧桑了,还有就是如果我们要扩展新的创建逻辑,比如说有新的产品要加入了,哪个工厂类就需要修改,这不是一个好的创建逻辑,违反了”开闭原则“。
相关文章推荐
- 设计模式(四):SIMPLE FACTORY简单工厂模式 -- 创建型模式
- 创建型模式——简单工厂模式(Simple Factory Pattern)
- 创建型模式之简单工厂模式
- 设计模式C++ 笔记一 创建型模式(Factory、abstract factory、singleton)
- 设计模式(Java版)-创建型模式之简单工厂模式
- 《设计模式》学习笔记(二):创建型模式。。我认识的第一个模式
- 设计模式[创建型]之单件模式
- 设计模式(1) 创建型模式和抽象工厂(Abstract Factory)
- 设计模式(创建型)之原型模式
- 创建型设计模式(2):简单工厂模式
- 创建型模式之简单工厂模式
- (创建型模式)Factory——简单工厂模式
- 七种创建型模式之一: 简单工厂模式(Simple Factory)
- 设计模式-创建型模式-生成器
- 创建型模式之简单工厂模式
- 重温gof版《设计模式》中的创建型模式
- 创建型模式-简单工厂模式
- 7种创建型模式 之1 Simple Factory 简单工厂模式 《Java与模式》学习笔记
- 《设计模式》学习笔记(3)——一个学习创建型模式的例子
- 设计模式(一)工厂模式Factory(创建型)