设计模式初探-抽象工厂模式
来源:互联网 发布:linux查看运行的服务 编辑:程序博客网 时间:2024/06/06 14:15
抽象工厂模式,Abstract Factory,按GOF的划分属于对象创建型模式,用于提供一个创建一系列相关或相互依赖对象的接口,而不用指定它们具体实现的类,很好的实践了“面向接口编程”的准则。
一、使用场景:
1、一个系统要独立于它的产品的创建,组合和表示,比如跨操作系统的文本编辑器,文本编辑器操作的应该是编辑器视图组件独立于操作系统的抽象,而不是具体于某操作系统的实现。
2、一个系统要由多个产品系列中的一个来配置时,比如常见的系统主题,系统可以有多套主题,客户可以根据自己的喜欢选择一套来使用。
3、当你要强调一系列相关的产品对象的设计以便进行联合使用时,这有助于提供一致的接口和实现。
4、当你要提供一个产品类库,而只想显示它们的接口而不是实现时。产品类库重在可以复用,如果与具体的实现过渡耦合,自然降低了产品类库的价值。
二、UML图:
三、Java实现
运行结果:
四、模式优缺点
优点:
1、分离具体实现,面向接口编程。客户端代码只需访问抽象接口而不需关心具体的实现类,解耦。
2、易于交换产品系列。由于抽象工厂为产品系列提供了统一的抽象层,所以如果想交换产品系列,只需交换相应的具体实现。
3、有利于产品的一致性,这得力于抽象工厂提供的一致抽象。
缺点:
1、难以支持新种类的产品。如果在现有产品系列中添加新的产品,那就要修改现有产品系列的抽象工厂接口,这样必然引起各产品系列抽象工厂的具体实现需要改变。
阅读全文
0 0
- 设计模式初探-抽象工厂模式
- 设计模式初探-抽象工厂模式
- 设计模式初探-抽象工厂模式(Abstract Factory)
- 抽象工厂设计模式
- 设计模式-----抽象工厂
- 抽象工厂设计模式
- 抽象工厂设计模式
- 抽象工厂设计模式
- 设计模式 抽象工厂
- 设计模式--抽象工厂
- 设计模式--抽象工厂
- 设计模式 抽象工厂
- 设计模式-抽象工厂
- 设计模式-> 抽象工厂
- 抽象工厂设计模式
- 设计模式--抽象工厂
- 【设计模式】抽象工厂
- 设计模式---抽象工厂
- markdownpad2之链接展示优化
- springboot【12】数据访问之NoSQL数据库MongoDB
- 面向数据规模编程
- php api_token 与 user_token 简析
- 剑指offer--栈的压入、弹出序列
- 设计模式初探-抽象工厂模式
- hdu 4059 The Boss on Mars
- 51nod 1238 杜教筛
- 递归——实现汉诺塔问题
- javascript 变量提升
- 自学Unity3D游戏开发(7)
- 如何正确打开华为手机的 USB 调试和 完整 log 功能?
- apk分析工具(aapt.exe)
- Flume使用大全之kafka source-kafka channel-hdfs(SSL加密)