对工厂模式的理解
2015-09-27 18:20
169 查看
前言
最近在看一本Head First系列的书,讲设计模式的。先后看了“观察者模式”和“工厂模式”。目前,趁着业务代码迁移,已经用观察者模式重构了业务的核心部分。至于工厂模式,一直在用,但对于工厂模式是什么,还需理一理。
工厂做什么?
很明显,工厂用来制造产品。例如,鞋厂的产品是鞋子,汽车厂的产品是汽车。从面向对象的角度讲,工厂负责生产“对象”。为什么要使用工厂模式?
从工厂做什么可以看出,工厂可以有很多客户。例如鞋厂,可以生产运动鞋、皮鞋、户外鞋等等,不同的客户需要不同的鞋子。对于客户来说,他们只关心工厂能不能生产自己想要的产品,至于工厂的其它产品,他们不需要知道。再回到面向对象,举个例子,有个生成缓存服务的工厂,它可以生成数据库缓存服务和动态数据缓存服务。这些缓存服务都有共同的接口供客户调用,如set,get等等。
客户A需要缓存数据库记录,这通常是Memcached。客户B需要缓存动态数据,通常需要Redis这种可以持久化,更可靠的缓存服务。
A告诉工厂:给我来个数据库缓存,B告诉工厂:给我来个动态数据缓存。客户只关心产品是否可用,性能是否达到要求,至于生产细节,那就是工厂的事了。
总结
工厂模式分离了生产方和使用方,减轻了使用方负担。更多
在网上搜工厂模式,看到几个变种:简单工厂模式、工厂方法模式、抽象工厂。简单看了下,不甚理解。遇到问题,用某个模式解决该问题,才能更好的理解该模式。
相关文章推荐
- hdu5492 dp
- linux查看网卡速率
- 【SQL Server性能优化】SQL Server 2008该表压缩
- shell脚本编程-函数
- memcached 使用
- HDU 5489 Removed Interval 2015 ACM/ICPC Asia Regional Hefei Online (LIS变形)
- HDU 5491 The Next(表示我的方法比较暴力,但需要考虑的东西比较少)——2015 ACM/ICPC Asia Regional Hefei Online
- 用ATL写文件
- Caffe源码中各种依赖库的作用及简单使用
- Caffe源码中各种依赖库的作用及简单使用
- ScrollView嵌套ListView起始位置不是顶部,ScrollView嵌套GridView起始位置不是顶部解决方法
- 《叩响C#之门》RichTextBox修改字体大小的研究
- 内核error: implicit declaration of function 'irq_to_gpio' 解决方法
- ios账号申请-从个人账号到企业账号升级之路
- 简单的存储过程
- 20150927js学习回顾
- 中秋快乐 亲们
- 04_链表
- 使用CSS达到阴阳八卦图等图形
- HDU - 5491 The Next 2015 ACM/ICPC Asia Regional Hefei Online