设计模式学习笔记(4)抽象工厂
2013-04-24 19:16
369 查看
抽象工厂模式
Provide an interface for creating familiesof related or dependent objects without specifying their concrete classes.
意思是:为创建一组相关或是相互依赖的对象提供一个接口,而且无须指定他们的具体类。
抽象工厂模式是工厂模式的升级,在有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。
抽象工厂模式中的角色与工厂方法类似,也有四个角色
抽象工厂(Abstract Factory)角色:该角色是抽象工厂模式的核心,与应用系统无关,任何创建对象的工厂类必须实现这个接口。
具体工厂(Concrete Factory)角色:该角色实现了抽象工厂接口,含有选择合适的产品对象的逻辑,并且受到应用程序的调用以创建产品对象。
抽象产品(Abstract Product)角色:该角色负责定义产品的共性,实现对产品最抽象的定义。
具体产品(Concrete Product)角色:该角色实现抽象产品角色所声明的接口,抽象工厂模式所创建的任何产品对象都是某个具体产品角色的实例。
抽象工厂模式的应用。
1抽象工厂模式的优点
抽象工厂模式是工厂方法模式的进一步抽象,针对的是一族产品。如果产品族中只有一种产品,则抽象工厂模式就退化为工厂方法模式。除了工厂方法模式的优点外,抽象工厂模式还有以下优点:产品族内的约束为非公开状态,在不同的工厂中,各种产品可能具有不同的相互的依赖关系,这些依赖关系由工厂封装在其内部,对于工厂的使用者是不可见的。
生产线的扩展非常容易,如果要针对同一产品族建立新的生产线,只需要实现产品中的所有产品接口并建立新的工厂类即可。
2抽象工厂的缺点
抽象工厂模式的最大缺点就是产品族本省的扩展非常困难,如果需要在产品族中增加一个新的产品类型,则需要修改多个接口,并且会影响已有的工厂类。
3抽象工厂模式的使用场景
抽象工厂模式的使用场景是:当一个对象族(或是一组没有任何关系的对象)都有相同的约束。则可以使用抽象工厂模式。
抽象工厂模式是一个简单的模式,使用场景非常多,例如,应用需要设计不同的操作系统时候,可以考虑使用抽象工厂模式,如果需要在三个不同的平台(Win,Linux,Mac)上运行,则可以通过抽象工厂模式屏蔽掉操作系统对应用的影响。三个不同的操作系统上的功能软件、应用逻辑、UI都是非常的类似,唯一不同的是调用不同的工厂方法,由不同的产品类去处理与操作系统交互的信息。
Provide an interface for creating familiesof related or dependent objects without specifying their concrete classes.
意思是:为创建一组相关或是相互依赖的对象提供一个接口,而且无须指定他们的具体类。
抽象工厂模式是工厂模式的升级,在有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。
抽象工厂模式中的角色与工厂方法类似,也有四个角色
抽象工厂(Abstract Factory)角色:该角色是抽象工厂模式的核心,与应用系统无关,任何创建对象的工厂类必须实现这个接口。
具体工厂(Concrete Factory)角色:该角色实现了抽象工厂接口,含有选择合适的产品对象的逻辑,并且受到应用程序的调用以创建产品对象。
抽象产品(Abstract Product)角色:该角色负责定义产品的共性,实现对产品最抽象的定义。
具体产品(Concrete Product)角色:该角色实现抽象产品角色所声明的接口,抽象工厂模式所创建的任何产品对象都是某个具体产品角色的实例。
抽象工厂模式的应用。
1抽象工厂模式的优点
抽象工厂模式是工厂方法模式的进一步抽象,针对的是一族产品。如果产品族中只有一种产品,则抽象工厂模式就退化为工厂方法模式。除了工厂方法模式的优点外,抽象工厂模式还有以下优点:产品族内的约束为非公开状态,在不同的工厂中,各种产品可能具有不同的相互的依赖关系,这些依赖关系由工厂封装在其内部,对于工厂的使用者是不可见的。
生产线的扩展非常容易,如果要针对同一产品族建立新的生产线,只需要实现产品中的所有产品接口并建立新的工厂类即可。
2抽象工厂的缺点
抽象工厂模式的最大缺点就是产品族本省的扩展非常困难,如果需要在产品族中增加一个新的产品类型,则需要修改多个接口,并且会影响已有的工厂类。
3抽象工厂模式的使用场景
抽象工厂模式的使用场景是:当一个对象族(或是一组没有任何关系的对象)都有相同的约束。则可以使用抽象工厂模式。
抽象工厂模式是一个简单的模式,使用场景非常多,例如,应用需要设计不同的操作系统时候,可以考虑使用抽象工厂模式,如果需要在三个不同的平台(Win,Linux,Mac)上运行,则可以通过抽象工厂模式屏蔽掉操作系统对应用的影响。三个不同的操作系统上的功能软件、应用逻辑、UI都是非常的类似,唯一不同的是调用不同的工厂方法,由不同的产品类去处理与操作系统交互的信息。
相关文章推荐
- 学习笔记之设计模式:抽象工厂
- 设计模式学习笔记(一)——Abstract Factory抽象工厂
- 设计模式学习笔记:抽象工厂和工厂方法的区别
- C#面向对象设计模式纵横谈 学习笔记3 Abstract Factory 抽象工厂
- iOS学习笔记(5)——设计模式之工厂方法、抽象工厂
- 设计模式学习笔记(一):抽象工厂
- 设计模式学习笔记(一):抽象工厂
- 设计模式学习笔记三:工厂方法模式
- 设计模式学习笔记:factory method(工厂方法)
- 设计模式学习笔记(3)工厂方法
- 《Head First 设计模式》学习笔记:工厂模式
- [知了堂学习笔记]_设计模式之工厂模式
- 【设计模式学习笔记】——工厂系列
- 设计模式学习笔记(四)--工厂模式
- 设计模式:工厂模式(学习笔记)
- 设计模式学习笔记---工厂模式(Java版)
- 换个角度学习设计模式-抽象工厂
- 设计模式学习笔记二:简单工厂模式
- 设计模式学习笔记三:工厂方法模式
- 设计模式学习笔记----工厂模式