职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 416|回复: 9

工厂模式的简单理解

[复制链接]
fl 发表于 2011-8-30 09:27 | 显示全部楼层 |阅读模式
  
工厂模式的简单理解
简单工厂模式
首先,如果一个客户要用到一款手机,一般的做法是客户去创建一款手机,然后拿来用:

这时,客户需要知道怎么去创建一款手机,客户和手机就紧密耦合在一起了.为了降低耦合,就出现了工厂类,把创建手机的操作放到了工厂里面去,客户直接使用工厂的创建手机方法,传入想要的手机型号就行了,而不必去知道创建的细节.

工厂方法模式
随着手机种类越来越多,简单工厂模式出现了弊端,每次新加入手机品种,工厂类都要加入新的创建逻辑.这时我们就可以把工厂类定义成了接口,而每增加一种新的手机,就增加该手机对应工厂类的实现,这样工厂的设计就可以扩展了,而不必去修改原来的代码:

抽象工厂模式
随着工厂规模的继续扩大,工厂开始生产充电器了.这时候工厂有二个系列的产品:手机和充电器.而手机必须使用对应的充电器才能使用.这时候分别使用一个手机工厂和一个充电器工厂都不能满足我们的需求,我们必须确认手机跟充电器的对应关系.我们把工厂改造一下,把手机工厂跟充电器工厂联系在一起:


设计模式初学者,欢迎指点...



ksdal 发表于 2011-8-30 09:27 | 显示全部楼层
factory关键的一点是object的生成由一个中间对象(工厂)来负责,简单工厂和抽象工厂的区别关键在于工厂是负责单一对象的生成还是一组有关联的对象的生成

yoyo 发表于 2011-8-30 09:27 | 显示全部楼层
iooyoo 写道
factory关键的一点是object的生成由一个中间对象(工厂)来负责,简单工厂和抽象工厂的区别关键在于工厂是负责单一对象的生成还是一组有关联的对象的生成


工作2年多去面试,给人问观察者模式,不懂,,,,
惭愧啊,决定看看设计模式...唉


broken 发表于 2011-8-30 09:27 | 显示全部楼层
呵呵,其实看看写源代码,在看看哪些设计模式,实际上就是面向对象的方法和策略了,然后再回过头看看c,对象还是过程该怎么区别应用就有体会了

gz-vps 发表于 2011-8-30 09:27 | 显示全部楼层
LZ的画的很好,解释的也很详细,如能附上示例代码就更好了

找不到我 发表于 2011-8-30 09:28 | 显示全部楼层
很好!!继续学习了


ksdal 发表于 2011-8-30 09:28 | 显示全部楼层
“客户需要知道怎么去创建一款手机,客户和手机就紧密耦合在一起了.为了降低耦合”

请问,这时,客户和手机是解耦了,但是,难道你没发现这时手机却和工厂之间又存在耦合了?

爱车车 发表于 2011-8-30 09:28 | 显示全部楼层
XTU_xiaoxin 写道
“客户需要知道怎么去创建一款手机,客户和手机就紧密耦合在一起了.为了降低耦合”

请问,这时,客户和手机是解耦了,但是,难道你没发现这时手机却和工厂之间又存在耦合了?


耦合不可能完全没有,只能尽量降低.
跟多款手机耦合总比跟一个工厂耦合好点吧...


有烟没火 发表于 2011-8-30 09:28 | 显示全部楼层
bryande 写道
LZ的画的很好,解释的也很详细,如能附上示例代码就更好了

代码就没贴了,网上有一大把..呵呵

只学java 发表于 2011-8-30 09:28 | 显示全部楼层
很经典。。。
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-27 16:56 , Processed in 0.127399 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表