博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
工业化生产:简单工厂、工厂方法和抽象工厂模式
阅读量:7038 次
发布时间:2019-06-28

本文共 724 字,大约阅读时间需要 2 分钟。

假想场景:hp和apple是全球知名的电脑生产厂家,他们各自的电脑操作系统分别是windows和macintosh,microsoft是软件行业的龙头。为了吸引更多客户购买电脑,hp和apple请ms为他们开发两款最常用的软件,办公软件和及时通讯工具。ms结了订单后,分别为hp和apple开发了office和msn。
上面的场景其实蕴含着我们常见的设计模式思维方式,code is cheap,代码来了。
一:简单工厂
ContractedBlock.gif
Code

上面的简单工厂在一个方法体中有个switch...case,违背了“对扩展开放,对修改封闭”的原则,即“开放-封闭原则”。下面的工厂方法就克服了简单工厂的缺点,降低了客户端程序和产品对象的耦合。

二:工厂方法

定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

ContractedBlock.gif
Code
工厂方法的缺点是每加一个产品,就要创建一个对应的产品工厂类,增加了额外的开发量。
三、抽象工厂
提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类。
抽象工厂最经典的应用莫过于数据库访问程序。网上有很多这方面的讨论。不多说了。这里我继续用开篇讲的场景来描述。
我们知道office和msn根据操作系统的不同可以分为windows版本的和mac版本的,也许还有linux,unix版本的,归根结底,这里的产品涉及到产品系列的问题,抽象工厂可以解决这个问题:
ContractedBlock.gif
Code
本文转自JeffWong博客园博客,原文链接:http://www.cnblogs.com/jeffwongishandsome/archive/2009/03/15/1411621.html,如需转载请自行联系原作者
你可能感兴趣的文章
http://itunes.apple.com/lookup?id=获取不到版本
查看>>
理解Javascript的状态容器Redux
查看>>
制作liveusb实现ubuntserver12全自动无人职守安装
查看>>
centos7的fstab要小心
查看>>
Windows phone8 基础篇(三)常用控件(二)
查看>>
架构师速成4.8-幼儿园书单资料推荐
查看>>
MySQL-Proxy实现读写分离部署文档
查看>>
For Update
查看>>
Hyper-V 之03 创建iSCSI存储和故障转移群集
查看>>
如何成为一名架构师?
查看>>
alsa lib 如何读取conf文件
查看>>
我的友情链接
查看>>
Android第十九期 - Sqlite离线存储教你写小米记事本
查看>>
c3p0配置方式
查看>>
新的历程
查看>>
LAMP架构
查看>>
嗯,让我们彻底搞懂C/C++函数指针吧(二)
查看>>
JavaScript之jQuery-3 jQuery操作DOM(查询、样式操作、遍历节点、创建插入删除、替换、复制)...
查看>>
nbu jnbsa启动错误
查看>>
JAVA复习笔记(七)
查看>>