作者:TAFU 来源:CSDN博客 酷勤网收集 2008-01-01
《人月神话》中有这么一段:
在开发第一个系统时,结构师倾向于精炼和简洁。他知道自己对正在进行的任务不够了解,所以他会谨慎仔细地工作。
在设计第一个项目时,他会面对不断产生的装饰和润色功能。这些功能都被搁置在一边,作为“下一个”项目的内容。第一个项目迟早会结束,而此时的结构师,对这类系统充满了十足的信心,熟练掌握了相应的知识,并且时刻准备开发第二个系统。
第二个系统是设计师们所设计的最危险的系统。而当他着手第三个或第四个系统时,先前的经验会相互验证,得到此类系统通用特性的判断,而且系统之间的差异会帮助他识别出经验中不够通用的部分。 一种普遍倾向是过分地设计第二个系统,向系统添加很多修饰功能和想法,它们曾在第一个系统中被小心谨慎地推迟了。结果如同Ovid所述,是一个“大馅饼”
现在这个现象似乎加重了,因为设计模式的出现,很多所谓的系统架构师在第一次设计系统时就会引入大量的设计模式,由于设计模式的基本要求是使用者能预测将来的需要的改动,那些对系统需求都没摸透的系统架构师就会猜测将来的变化并采取相应的设计模式(甚至有的人都不知道将要面对什么变化,只是绝能能套设计模式)。
于是我看到了这样一个复杂的架构,里面采用了代理模式,Facade模式,DAO模式,工厂模式....但是,如果我要加一个东西,却需要按照他的文档到某个XML文件中加几句,再到某个文件中加几个宏,然后再到某个包中加一个类,并实现某个接口,然后再到另外一个地方加一个工厂类,并实现另外一个接口,同时该工厂类的实现必须按照某种规范返回刚才的类......还不如一个超级耦合的系统,性能要好很多,调试也容易。
来自:http://blog.csdn.net/tafu/archive/2007/12/24/1965670.aspx
评论
| 说得好,现在很多技术人员往往先把自己都弄晕了. ( 开源的基于ajax的可视化自定义web表单工具, 在: http://my5155.meibu.com ) |
# bugxxx 发表于2007-12-25 15:04:01 IP: 121.68.35.*
| 请问ADO是什么模式? |
# tafu 发表于2007-12-25 19:51:43 IP: 207.46.92.*
| TO gubxxx, 不好意思,是DAO模式,写错了,已经改正。这个模式不在四人帮的书里,但是用Hibernate的人就会用这个模式。 |
# He 发表于2007-12-29 14:12:08 IP: 121.229.27.*
| 文章写不好并不是汉字的错 向一个复杂系统中添加东西,能够做到按照文档逐处添加已经很不错了,相比为了添加一个东西需要修改已有的东西哪个更好些。设计模式的出现并不是让开发变得简单了,而是对开发人员的要求便的更高了 |
# wanghualeilei 发表于2007-12-30 14:55:38 IP: 221.122.253.*
| DAO其实就是一种strategy模式,只不过抽离出去的行为是数据访问相关的行为 |
# 老臣 发表于2007-12-30 16:27:46 IP: 121.109.15.*
| 这是一种误区,甚至可以说是一种幼稚。解决方案的目的是利用最简单的技术完成客户的需求。看一看国外项目的开发方式就可以知道,其实最好用的还是用最简单的方法和工具完成最复杂的业务。 |
# kking 发表于2007-12-31 10:44:16 IP: 59.46.66.*
| 不错,有同感。 |
# BlueDog 发表于2007-12-31 18:19:31 IP: 220.189.84.*
| 对于模式我的理解是不要因模式而模式,自然就好 我对于李建忠老师曾讲过一句话--“不要一开始就以模式来进行设计”很以为然。在第一版里,你首先要完成的是功能性的。只有在需求剧烈变化时才去考虑使用模式。 其实模式应该有两大类, 一类是GOF里所讲的23种基本模式及其演化模式,它都是基于具体代码而言的,范围应用也只是针对某个类或多个类而言 另一类我觉得更是需要深入研究的--架构模式。它并不是针对某个类,而是针对整个系统而言的。但这方面的书相对较少,但实际使用时则非常影响系统。 |

