提到设计模式,大家心头都会一悸
这一悸有千恩万谢、这一悸有酸甜苦辣、这一悸有悲欢往事
在园中有几人没有这个分类,又有几人不深谙他的魅力
工厂、策略、单件、观察者、桥梁、装饰、责任链、构建、状态、门面、享元……
这一串熟悉的面孔是否让你一次次热血沸腾,那就来参加讨论吧
说说你的设计故事
说说你最喜爱的设计模式、又是什么那么的吸引你
说说你给新手的建议

posted on 2008-02-19 09:01
floodpeak 阅读(2375)
评论(28) 编辑 收藏 所属分类:
面向对象
评论
| 2008-02-19 09:08
好激烈……
| 2008-02-19 09:18
觉得这些该放到小组里去讨论
| 2008-02-19 09:21
留名
| 2008-02-19 09:25
我先抛个砖吧
设计模式中,用到过的可能不下十五种,具体的也没有统计过,但令我印象最为深刻的,也是给我最大受益的还属观察者模式
我做的是广电系统的线缆设计模块,使用的是超图提供的GIS控件,使用过它的同行肯定知道,这个控件提供了大量的消息,包括最基本的鼠标键盘消息,还有一些特殊的消息,比如添加了空间对象
开始的时候用这些消息还是很方便的,毕竟人家也是千锤百炼的,稳定性肯定有保障,可是开发了一个月后,功能做了一部分,突然发现再加入新的功能已经举步维艰,因为代码量太大,而使用这样的一个消息系统,各个关联不大的功能之间也耦合紧密,看了半天觉得回到了过程时代,在手足无措之时想到了故交观察者。
用观察者模式来处理这样的问题实在是游刃有余,首先让Subject盯着控件发出的各种消息,然后将消息分析后分发给各个Observer,而这时的各个功能逻辑可以散布到各个观察者中,耦合度急剧下降,而且各个观察者的注册与反注册可以根据需要随时进行,灵活性急剧增强,从而使整个系统可扩展性良好、可维护性提高、可重用性增强,为后续的开发工作提供了有力的保障
| 2008-02-19 09:26
无模式是最好的模式,不要为了模式而模式.
好好补充一下OO基础吧.
| 2008-02-19 09:27
@JerryChou
@WEBBER
感谢支持
| 2008-02-19 09:34
喜爱啊……
| 2008-02-19 09:34
工厂模式以前在作Web Service时候经常用到,和命令模式一起。
现在观察者用的挺多的。
单例模式配合缓存坐权限比较好,还没有看到那位讲这个模式时候用这个举例的。
我觉得那种模式用的多是因为开发过程中的须要,硬套不是很好。
在我不知道有gof23时候就用过模板方法了,我相信大多数人也都用过
| 2008-02-19 09:42
感觉用得最多的,还是abstract factory,我做过的项目中,好多地方都用到过.
| 2008-02-19 09:48
@niming
主页中可以为更多的人看到,小组的讨论可能技术性更强一些,而这里我希望是一个经验性强一些,也可以给初学者一些启迪
| 2008-02-19 09:50
@阿牛 - 专注OOP
呵呵,教训的是
学习设计模式的过程应该是这样的
无模式->学习模式->精通模式->无模式
谁都希望达到无招胜有招的境界,可是这需要过程
今天的讨论应该在第二箭头之中
| 2008-02-19 09:53
@Jeffrey Zhao
感谢关注
| 2008-02-19 09:58
--引用--------------------------------------------------
阿牛 - 专注OOP: 无模式是最好的模式,不要为了模式而模式.
好好补充一下OO基础吧.
--------------------------------------------------------
装得很像
| 2008-02-19 10:01
@海东青
有时间给我们讲讲单例模式配合缓存做权限的例子
设计模式是一种真理,我们在没有学习过设计模式时都会或多或少的与他不谋而合,但是学习过后我们可以把他从经验性的东西提炼为理论性的,并且反过来再指导实践,这应该就是我们学习并使用设计模式的初衷
这好比是政经中的价值规律,任何人都知道东西如果少了而需求大,它价格马上就涨,而反过来价格就贱,可是学过政经后就可以站到理论高度了,把握起来更加从容
| 2008-02-19 10:07
@Rivers Zhao
抽象工厂由于它产生的是对称的产品系,因此这种应用较少,到现在为止我还没有遇到过
而工厂方法我是经常使用的
这里给出一个二者的
区别,以供大家参考
| 2008-02-19 12:56
| 2008-02-19 12:56
@ 鸿峰师兄
谢谢.
| 2008-02-19 13:06
使用过工厂、策略、门面,其它的都不了解,我火星
| 2008-02-19 13:22
博主的随笔以后会不会都是激烈讨论系列?
| 2008-02-19 13:28
@金色海洋(jyk)
看了一下你的文章,我的感觉是你有点小题大做了
面向对象的基本特征就三个:继承、封装、多态,并没有反射的事情
提高可维护性和可扩展性的良药就是解耦、抽象,而这些正是设计模式所要解决的问题,只要你使用了面向对象的编程语言,就可以说你就是在OO,哪怕你把所有逻辑全写在Main中,那也是用类的方法在做事情,还是OO,而至于是否用好了OO就要看你对设计的理解和把握了,而捷径正是此番讨论的主题
| 2008-02-19 13:37
@一抹微蓝
呵呵,多看看吕震雨的文章会对设计模式有更深刻的了解
借此机会感谢他
| 2008-02-19 13:44
@Cure
讨论可以有一个大致的方向然后各抒己见
专题文章后面的讨论往往都是就事论事,普遍问题可能关注的少一些
昨天发了第一个讨论题目,反响还不错,于是今天我就又如法炮制
如果大家都积极支持,我会继续下去的
当然了,技术文章还是要做的,讨论完了理论总得实践实践吧,呵呵
| 2008-02-19 18:16
模板模式
用的最多了
| 2008-02-19 19:46
找一个具体点的例子来讨论吧。
| 2008-02-19 21:42
@zbh
一般学设计模式的人都有过这样的经历:这模板模式怎么我还没学就用过了,哈哈
| 2008-02-20 13:40
--引用--------------------------------------------------
zbh: 模板模式
用的最多了
--------------------------------------------------------
--引用--------------------------------------------------
鸿峰师兄: @zbh
一般学设计模式的人都有过这样的经历:这模板模式怎么我还没学就用过了,哈哈
--------------------------------------------------------
同意!
| 2008-03-05 08:47
博主,忙烦把吕震雨的博客地址帖一下吧.
| 2008-03-05 09:03
@毁于随
见我右边的关注博客