创建型设计模式(2):简单工厂模式
2013-04-15 11:31
369 查看
动机
简单工厂模式是抽象工厂和工厂方法的基础和初步实现。
目的
1. 不向客户透露对象实例化的细节。
2. 通过通用接口创建对象。
实现
实现非常简单:
1. Client需要Product时,不使用new来创建,而是提供 Product 描述给Factory,让 Factory 提供一个新的 Product 。
2. Factory实例化一个Product给Client。
3. Client使用抽象Product,而不关心Product的具体实现。
实例
1. 绘制形状的绘图程序。形状就是Product接口,三角形这些是Concrete Product,我们可以创建一个工厂,然后根据客户的描述创建对于的产品。不过添加新的形状时,我们需要修改工厂类。
具体问题和实现
1. 添加新产品时,需要修改工厂。
一般我们通过if语句判断产品描述,并实例化不同的产品,有新的产品时,我们需要增加新的判断。通过抽象工厂模式可以解决这个问题。
总结
1. 当你确实需要工厂模式时才使用,不然只是增加程序的复杂度,比如多种对象有相似的基本类型时,可以考虑使用简单工厂模式来统一创建对象。
2. 简单工厂有比较多的判断分支语句,违反了开闭原则的对修改关闭的原则,所以,明智的做法是,对一些固定和简单程序使用简单工厂模式,对一些复杂和需要经常扩展的程序,使用抽象工厂模式或者工厂方法模式。
参考:
http://www.oodesign.com/factory-pattern.html
简单工厂模式是抽象工厂和工厂方法的基础和初步实现。
目的
1. 不向客户透露对象实例化的细节。
2. 通过通用接口创建对象。
实现
实现非常简单:
1. Client需要Product时,不使用new来创建,而是提供 Product 描述给Factory,让 Factory 提供一个新的 Product 。
2. Factory实例化一个Product给Client。
3. Client使用抽象Product,而不关心Product的具体实现。
实例
1. 绘制形状的绘图程序。形状就是Product接口,三角形这些是Concrete Product,我们可以创建一个工厂,然后根据客户的描述创建对于的产品。不过添加新的形状时,我们需要修改工厂类。
具体问题和实现
1. 添加新产品时,需要修改工厂。
public class ProductFactory{ public Product createProduct(String ProductID){ if (id==ID1) return new OneProduct(); if (id==ID2) return new AnotherProduct(); ... // so on for the other Ids return null; //if the id doesn't have any of the expected values } ... }
一般我们通过if语句判断产品描述,并实例化不同的产品,有新的产品时,我们需要增加新的判断。通过抽象工厂模式可以解决这个问题。
总结
1. 当你确实需要工厂模式时才使用,不然只是增加程序的复杂度,比如多种对象有相似的基本类型时,可以考虑使用简单工厂模式来统一创建对象。
2. 简单工厂有比较多的判断分支语句,违反了开闭原则的对修改关闭的原则,所以,明智的做法是,对一些固定和简单程序使用简单工厂模式,对一些复杂和需要经常扩展的程序,使用抽象工厂模式或者工厂方法模式。
参考:
http://www.oodesign.com/factory-pattern.html
相关文章推荐
- "围观"设计模式(8)--创建型之简单工厂模式、工厂方法模式、抽象工厂模式
- 设计模式(创建型)之简单工厂模式(Simple Factory Pattern)
- 三.创建型设计模式——Simple Factory Pattern(简单工厂模式)
- 设计模式之创建型简单工厂模式
- 第一篇、创建型设计模式——简单工厂模式(静态工厂方法模式)
- 设计模式复习笔记 (2)创建型模式:简单工厂模式
- 创建型设计模式 ——简单工厂模式
- PYTHON设计模式,创建型之简单工厂模式
- 设计模式(Java版)-创建型模式之简单工厂模式
- 设计模式 -(1)简单工厂模式(创建型)
- 设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 简单工厂模式(Simple Factory Pattern) - Java实现
- "围观"设计模式(8)--创建型之简单工厂模式、工厂方法模式、抽象工厂模式
- Java设计模式(1)——创建型模式之简单工厂模式(Simple Factory)
- 创建型设计模式——简单工厂模式
- JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
- 设计模式学习笔记--简单工厂模式(Simple Factory Pattern)【创建型模式】
- (1)设计模式之简单工厂模式(创建型模式)
- JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
- java设计模式(创建型)之简单工厂模式
- 设计模式1——创建型模式之简单工厂模式