摘要: 在工作中,常常使用到设计模式,增强了软件的灵活性,然而要为它们排排位置,还真是一件难事,因为每个人对设计模式的理解程度,每个人使用的编程语言,个人的习惯,工作性质等等都会影响排行榜。在这里暂且列出自己心中的排行榜吧(仅限Design Pattern中提到的设计模式)。 冠军宝座:Strategy Pattern理由:Strategy 是封装一些运算法则,使之能互换。在工作中,总有几种选择方案,要... 阅读全文
posted @ 2006-05-12 17:06 行进中开火 阅读(453) 评论(0) 推荐(0) 编辑
摘要: 又一年……镜头切换…… 因为小王平时的出色表现,现在小王也是小小的项目经理了。而身边又多了一本书《重构:改善改善既有代码的设计》。排序的算法也相对稳定下来,排序也成为一个独立的模块,很多的地方中都使用到了。然而需求又变了,说要使用冒泡排序算法。“我的天啊,为何不早说呢?现在这么多地方都用到了。”小王查找了一下,总共有15处使用了相同的代码。代码的腐臭味。“以后还要增加,怎么办?以后还要... 阅读全文
posted @ 2006-05-12 17:05 行进中开火 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 相信很多人都喜欢看这部喜剧,我是很喜欢,里面包括了成长中的悲欢离合,你在其中可以寻找你成长的足迹。 编程成长之路何尝不是这样的呢? 故事就是从这里开始的。 小王是刚毕业的学生,进入一家软件公司,薪水不错。年轻人充满干劲,有着远大的目标。前三天参加了公司的培训,三天没写代码了,手痒。第四天,项目经理走过来说:“小王,写一个整型链表的排序算法吧,我们在项目中... 阅读全文
posted @ 2006-05-12 17:05 行进中开火 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 软件开发是从当前一无所有的状态出发, 向一个目的(解决客户问题)前进。 而软件设计是尽量寻找一条最直接的, 最短的路径。而设计模式是经过实践检验的一些软件设计的方法,学习它,可以让你踏着前人铺的路,更快的前进。 学习一种设计模式,光靠看书是不够的。要想充分理解,还是有一定的难度的。我在学习时是这么做的: 1 选择一至两本好书。书不在多,在于精。 2 采取逐... 阅读全文
posted @ 2006-05-12 17:04 行进中开火 阅读(337) 评论(0) 推荐(0) 编辑
摘要: 在工作遇到紧急的项目在所难免,所以在几个月前在论坛中提了这么一个问题:标题: 我不是老板,紧急的项目在所难免.不知大家如何处理的?内容: 现在的市场如此激烈,速度也代表money.这我可以理解的。 在这种情况下,项目的dead-line从一开始就定了。 有些时候,我采取的办法是砍feature,可老板不答应,谁叫我是打工的呢。 不知大家如... 阅读全文
posted @ 2006-05-12 17:03 行进中开火 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 装饰模式可以在不改变现有类的情况下向其中添加新方法。(敏捷软件开发-原则 模式与实践 Robert C. Martin)这是Martin对装饰模式作用的说明,他也举了个modem的例子。这句话的意思是一点不改变现有类的代码而向其中添加新方法。那么有人会问,如果我有代码,有些时候我是否直接把新的方法加在已有的类中来的简单呢?是的,在特定的时期直接加在类中来的简洁,但有些时候,虽然你有类的源代码,但... 阅读全文
posted @ 2006-05-12 17:02 行进中开火 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 访问模式允许在不更改现有类层次结构的情况下向其中增加新方法。这里重点是不更改类层次结构,指的是类的框架,但可以很少的修改一些代码。 Visitor模式的核心机制是双重分发的技术。何谓双重分发呢?下面我会慢慢解释这个“双重分发”。 现在中国假冒产品猖獗,我就用这来举个例子,说明访问模式的方法。 让我们来看看UML图: CProduct是一个抽象类... 阅读全文
posted @ 2006-05-12 17:01 行进中开火 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 作用: 为一组具有复杂且全面的接口对象提供一个简单特定的接口。 正文: “金玉其外,败絮其中。”这句话对门面模式倒是可以解释。“金玉其外”指的就是门面,是调用者能看到的,是简单特定的接口。“败絮其中”指的就是复杂且全面的接口对象,里面有复杂的逻辑和结构,对调用者来说,是不可见的。 如果调用者不通过门面类而直接调用子系统的接口,那就是很头疼的事。“一叶障目,不见泰山。”... 阅读全文
posted @ 2006-05-12 17:01 行进中开火 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 作用: 在某一个对象的状态发生变化的时候,某些其它的对象做出相应的改变。 正文: 观察者模式是一对多的模式,是那种你一旦理解了,就会觉得到处都可以用的模式之一,所以你一定要抵挡的住诱惑,过度使用观察者模式往往会导致系统难以理解和跟踪。 观察者模式分为两种模型,为拉模型和推模型。 让我们来看个例子。 冬天的早上,起床是件痛苦的事,特别... 阅读全文
posted @ 2006-05-12 16:59 行进中开火 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 作用: 允许一个对象在其内部状态改变时改变它的行为。 避免if语句嵌套过深或过于复杂,易添加新的状态。正文: State模式是一种有限状态机,它很好的解决了if语句嵌套过深或过于复杂,能容易理清状态之间的复杂逻辑,就是“何时干何事”。而且很容易的添加新的状态或修改原有的状态。 在State模式中,一个事件会引起状态的迁移。 让我们来看一个... 阅读全文
posted @ 2006-05-12 16:59 行进中开火 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 作用: 用一个中介对象来封装一系列的对象操作。中介者使各对象不需要显式地相互交互,从而使其耦合松散,而且可以独立地改变它们之间的交互。 正文: 中介者模式是一个简单易用的模式。也许很多人在实际的项目中都已经用到过了,只是不知道它就是中介者模式。它把多对多的交互变成了一对多的交互,从而简化的交互,理清了思路。 让我们来看个例子。 ... 阅读全文
posted @ 2006-05-12 16:58 行进中开火 阅读(260) 评论(0) 推荐(0) 编辑