菜鸟的第一问---什么是设计模式?尽可能的简单好吗--肯定结贴
希望能通俗易懂 问题点数:100、回复次数:22Top
1 楼qingrun(青润)回复于 2002-10-11 15:33:34 得分 10
设计模式,用我的话来说,就是:
在软件开发的设计过程中一些通用问题的通用解决方式。
这些解决方式都是经验的总结,并没有什么非常特殊的点。Top
2 楼hillwell(天子门生)回复于 2002-10-11 15:53:20 得分 0
我刚才已经看了一些文章,现在我理解设计模式就是设计的方法论可以吗?
刚看了油漆匠模式,那么继承这种理念也是设计模式了?
Top
3 楼ozzzzzz(希望敏捷)回复于 2002-10-11 16:25:53 得分 10
首先我们要感谢Christopher Alexander和他的同事在建筑行业最先应用了模式语言,从而是模式这个概念为大家所知道。然后我就就应该感谢四人帮(GoF)把在1994年(大概是在那一年吧)出版来《DESIGN PATTERNS –Elements of Reusable Object-Oriented Software》 简体版为《设计模式-可复用面向对象软件的基础》机工¥35.00 在这部书中四人帮全面介绍了来自于SMALLTALK并在OO社区中广泛议论的设计模式 但是你要知道模式不只是设计模式 还有分析模式 测试模式 以至于你可以在任何可以复用的地方发现模式 比如写作模式 作曲模式 而不是只存在于面向对象这个小领域
设计模式简单说是面向对象设计经验的记录,每一种设计模式都有一个正式的名称,解释和评价了面向对象系统中重复出现的一些重要的设计。如Alexander说的那样 每一个模式描述了我们周围不断重复发生的问题,以及该问题解决方案的核心。由此,你就可以一次一次地使用此方案,而不需要做重复工作。
每一个模式都包括了四个方面(至少我看到的都是这样)模式名称 问题 解决方案 效果
名称是一个正式的名称 它是为了记忆思考和讨论的方便 使用一两个单词做的命名 问题描述的是模式适用的场景 也就是模式的前因后果 接着就是解决方案 也就是解决问题的模板 最后的是模式的效果 告诉你使用模式的后果 从而让你平衡你使用模式的代价
说到设计模式就不能不提到重构Refactoring 设计模式可以说和重构是一个铜板的两面 可以简单的说重构的目标是设计模式指出的目的地 而你只有通过重构才可能发现模式 所以如果一个人和你说大谈设计模式 而不知道重构 那么就离开那里 当然还可以留下一下口腔的腺体分泌物在那个人的面部 ^_^
Top
4 楼qingrun(青润)回复于 2002-10-11 17:00:40 得分 0
也许可以这样认为:设计模式整体的应用可以成为方法论。
但,单个设计模式的应用只能作为一种途径,一种解决某一类相似问题的通用方法。Top
5 楼EricLao(Eric2002)回复于 2002-10-11 17:27:34 得分 10
我也是刚看不久,我这么理解:
设计模式就象围棋中的定式,在某些环境某些场合中,用某种设计模式最好,但是即便这是所谓的“定式”,也还是有各种各样的变形和变化,
其实具体而言设计模式终归要表达对象之间的动态和静态的各种关系。
Top
6 楼qingrun(青润)回复于 2002-10-11 17:55:25 得分 0
EricLao(Eric2002)地比喻不错,我也正是这个意思。:-P
不要梦想模式能解决一切问题,但,要相信他有解决一些问题的能力。就像不要奢望某一个人是全能,但可以希望他学有所长,在某一方面比别人强。Top
7 楼caina3(阿郎→偶什么都不会)回复于 2002-10-11 20:58:10 得分 10
白纸上有一个点,你要利用这个点,画出一个圆来,还要把里面填满。
一:以这个点为中心,每隔一定的角度,画出若干条相同长度的线段,然后,将这
些线段的端点全都连接起来。你画的线段越多,你的角度越小,那么,你得到
的圆也就越接近你需要的实心圆。
二:以这个点为中心,以一定的长度为直径,画出一个圆形,然后,以圆形边缘的
任意两点为端点,画线段。你画的线段越多,那么,你得到的圆也就越接近你
需要的实心圆。
三:以这个点为中心,以一定的长度为直径,以一定的角度,让这条直径不断的偏
移,记录下他们的路径。你偏移的次数越多,偏移的角度越小,你得到的圆也
就越接进你需要的实心圆。
四:。。。。。。
。。。。。。
你怎么画?一二三四都是模式,我是这样理解的。。。。。。Top
8 楼caina3(阿郎→偶什么都不会)回复于 2002-10-11 20:59:47 得分 0
呵呵!从来没有接触过哈!只是对这个有兴趣而已。胡言乱语的,见笑了。Top
9 楼yangzhenhai(叉子)回复于 2002-10-12 18:32:17 得分 5
越说越糊涂了,重构究竟是什么意思?以前的开发方式里面有没有重构这个概念?是不是只有xp才会用到重构?
Top
10 楼veinstone(脉石)回复于 2002-10-12 19:37:43 得分 5
^_^: 设计模式者条条框框也Top
11 楼w_rose(w_rose)回复于 2002-10-13 00:21:08 得分 5
加入设计也有模式,那么还需要设计吗?Top
12 楼w_rose(w_rose)回复于 2002-10-13 00:25:52 得分 0
我是说谎的者!当我这么说时,世界上就是有那么多人反而把我的费话当做咒语。中国人从老早就把各种记载先人生活日记的文章当作咒语,结果科学反而成为雕虫小技。中国人应该比西方人警醒呀?但是不!今天,模式越来越像咒语了。Top
13 楼w_rose(w_rose)回复于 2002-10-13 00:26:53 得分 0
相信我说的是废话吧,这是全部模式的进化模式!Top
14 楼Max_LBY(七彩狼)回复于 2002-10-13 03:56:35 得分 5
简单的说,重构就是将同一段代码或是模块,反复的修改、反复的编写,使同一功能适应各种不同应用的要求,原则是使代码简洁、灵活、具有极佳的可扩展性。
而模式就是重构代码的抽象,模式本身只是一个指导原则,并不含任何的代码。模式告诉你,在某种情形下,应该以什么样的方式具体来实现它。
Top
15 楼ozzzzzz(希望敏捷)回复于 2002-10-13 10:53:48 得分 0
yangzhenhai(叉子)
重构来自smalltalk社区 现在为oo所推崇 简单的定义是这样 重构不改变代码的外部行为 而只改变代码的内部结构 重构的目的在于可以增加代码的清晰程度 便于阅读 便于增加新功能 便于维护 而重构是一种设计 它给你带来了一种逐渐递增软件规模的方法 重构的目标是设计模式 设计模式是从重构中分析发现的 重构又可以使设计模式更加合理 更加简单 而使设计模式在它该出现的时候出现 而不是落入过分设计的泥潭Top
16 楼talkinsmile(笑侃)回复于 2002-10-14 00:26:00 得分 10
没事说说自己的愚见:
我认为设计模式是一种被认可了的规范的方法.任何成熟的工程学科都使用成百上千的设计模式.
就拿汽车制造业为例,每个零部件都有其特定的设计模式,而且是有特定的市场规范的.
现在软件开发讲究复用.我们把一个软件系统分成组件来开发,就应该考虑复用那些已经存在的代码.其实,这也是对设计模式的复用.那些代码就是其设计模式的体现.而当代码成为了设计模式之后,我们就可以用四个信息来描述:
1.模式的名字;
2.模式通常被应用的问题;
3.设计模式的特征;
4.应用设计模式的结果.
这四个信息相当重要.因为如果对它们描述得当的话,我们就能够比较容易地从成千上万的候选模式中找到适合的可复用模式,这对提高我们的开发效率十分重要.
在面向对象系统中,要使用设计模式,可以通过两种方法:
1.继承;//这是OO技术的基本概念,不用多说了.
2.复用.//这时就要在各个模式之间定义良好的接口,最好是按照市场的规范来
//定义.
最后一句话:其实,运用设计模式就是拿来主义.Top
17 楼ycats(加菲猫)回复于 2002-10-14 09:04:28 得分 10
当你有充分的能力,运用oo知识,实现高内聚、低耦合的设计时,你会发现你的设计与设计模式中的一些非常相似,如果一开始,你就知道这些,可能就不用绞尽脑汁想那么久了。设计模式就是oo设计专家总结的经验模式。Top
18 楼hillwell(天子门生)回复于 2002-10-14 09:47:25 得分 0
谢谢诸位,看了大家的不同见解,有了一定的收获,但真的不知道
到底哪位说的更准确,只好平均给分,希望大家不要见怪Top
19 楼suyoubing(hike)回复于 2002-10-14 09:53:56 得分 5
和WORD的模板一样,是用来套用的。当然,你在不常用WORD写文档的时候,你很少用到,而且你感觉不到WORD模板的好处,当你用得多了,你就会觉得WORD模板离不开你。开始使用WORD模板总有点难处,当你多使用,多看,多学后,就会了。所以你把你的设计模式当成WORD模板来看,就容易了很多。Top
20 楼twinsant124(蚂蚁的天空)回复于 2002-10-14 10:09:13 得分 5
ant到此一游。:DTop
21 楼frued(姚重华)回复于 2002-10-14 11:55:40 得分 5
hehe,一起学习,有机会交流一下吧!Top
22 楼SHIZUMARU(绯雨闲丸)回复于 2002-10-14 11:58:19 得分 5
to o6z:
你的思想实在太正统了吧?正统得让我觉得你有点无趣。“pattern+refactoring”,没有一点炒作的价值。
想想,还有没有什么可以惊天动地的概念?最近不好玩了。Top




