Java与模式笔记(4)
来源:互联网 发布:自己的淘宝信誉怎么看 编辑:程序博客网 时间:2024/05/17 21:57
抽象工厂(Abstract Factory)模式是对象的创建模式,又称工具箱(Kit或Toolkit)模式。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,创建多个产品族中的产品对象。
结构与角色(图)
抽象工厂(Abstract Factory)角色:担任这个角色的是工厂方法模式的核心,它是与应用系统的商业逻辑无关的。通常使用Java接口或者抽象Java类实现,而所有的具体工厂类必须实现这个Java接口或者继承这个抽象Java类。
具体工厂类(Concrete Factory)角色:这个角色直接在客户端的调用下创建产品的实例。这个角色含有选择合适的产品对象的逻辑,而这个逻辑是与应用系统的商业逻辑紧密相关的。通常使用具体的Java类实现这个角色。
抽象产品(Abstract Product)角色:担任这个角色的类是工厂方法模式所创建的对象的父类,或它们共同拥有的接口。通常使用Java接口或者抽象Java类实现这一角色。
具体产品(Concrete Product)角色:抽象工厂模式所创建的任何产品对象都是某一个具体产品类的实例。这是客户端最终要的东西,其内部一定充满了应用系统的商业逻辑。通常使用具体的Java类实现这一角色。
抽象工厂模式与工厂发放模式的最大区别:工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则需要面对多个产品等级结构。
抽象工厂模式是工厂方法模式的进一步推广。
在以下情况下,应当考虑使用抽象工厂模式:
1、 一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。
2、 这个系统的产品有多余一个的产品族,而系统只消费其中某一族的产品。
3、 同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来。
4、 系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。
在系统中产品族增加时,抽象工厂模式是支持“开-闭”原则的。对于产品等级结构的增加,抽象工厂模式是不支持“开-闭”原则的。综合起来,抽象工厂模式以一种倾斜的方式支持增加新的产品,它为新产品族的增加提供方便,而不能为新的产品等级结构的增加提供这样的方便。
- Java与模式笔记(4)
- 《java与模式》笔记
- 《Java与模式》笔记
- java与模式笔记(4) 抽象类相关
- java与模式学习笔记(一)
- Java与设计模式 (笔记一)
- Java与模式笔记(1)
- Java与模式笔记(2)
- Java与模式笔记(3)
- Java与模式笔记(5)
- Java与模式笔记(6)
- Java与模式笔记(7)
- Java与模式笔记(8)
- Java与模式笔记(9)
- Java与模式笔记(10)
- Java与模式笔记(11)
- Java与模式笔记(12)
- Java与模式笔记(13)
- POJ 3468 A Simple Problem with Integers (线段树)
- Windows 7下使用Windows Media Center观看Internet TV
- J2ME的文件系统操作
- SQL Server数据库应用之(1)
- C++ map的基本操作和用法
- Java与模式笔记(4)
- java类Timer和TimerTask的使用
- SQL Server数据库应用(2)
- SQL_TRACE的基本用法
- C#程序实现动态调用DLL的研究
- 如何处理GridView模板列绑定字段过长的问题(转)
- 有几个关于分区的问题
- javascript开发中常用的一些工具代码~
- C++多态中的实现要用指针,而不是虚基类(接口)的对象