谈谈设计模式 ( 积分: 100 )

  • 主题发起人 主题发起人 那年黄梅花开
  • 开始时间 开始时间

那年黄梅花开

Unregistered / Unconfirmed
GUEST, unregistred user!
不知大家在学习设计模式的时候有没有一种感觉,那就是感觉许多模式都差不多,没有太大的差别,玩来玩去都是多态的应用.比如:工厂方法模式&抽象工厂模式,状态模式与策略模式,等等等,感觉都差不多,大家有什么感受呢
 
模式讲来讲去都是对面向对象的诠释.
 
都是大同小異
 
现在想看看这方面的书了,,不能再纯粹埋头写代码了。。。。
各位富翁,有没什么好的书推荐一下..............
 
呵呵,模式理解比应用简单多了,看别人的模式比自己发现已有的或新的模式简单多了.
 
模式就是运用多态性等面向对象特征,然后对规律性的框架进行总结和规划。
 
很多模式还是不一样的,本来面向对象的最大特点就是继承和多态,不管什么模式,始终没有脱离这本质的两点,当我们没有意识的和有意识的遵循了某个规范是不一样的,这个不是设计模式的遗憾,恰恰相反说明了运用设计模式其实就是对面向对象的高级应用
 
建议先自己搞,写的程序多了,对模式有某些需求,并且自己设计了一些模式以后,再反回去看那些介绍现成模式的书会事半功倍的,比一上来就看一大堆书,然后死套模式有效的多
 
先了解模式,并有机会尝试用下模式,再提高.感觉也不错
 
什么是模式?模式研究的是什么?

没有弄清楚这个问题前,它就不能帮助你,所以先可以不急着谈模式。

模式讨论的,仅仅是面向对象中的很小的一个部分,因此可以略去不急着谈模式。

但是,模式不是谈多态的,如果看到的是多态,回头想一想开头的那行字比谈模式更有价值。

以下引用,歪批一番,如有得罪,大伙就把我模式掉算了:

“模式讲来讲去都是对面向对象的诠释”,看上去一针见血,但感觉没扎准。

“都是大同小異”,这句比较精辟,但禅机太深,远比模式更模式。

“不能再纯粹埋头写代码了”,可它就是一群人埋头写了无数代码后的顿悟呀。

“模式理解比应用简单多”,是啊,模式不谈技巧,尤其后面那句令我肃然起敬。

“模式就是运用多态性等面向对象特征,然后对规律性的框架进行总结和规划”,觉得后半
句对上路了,但不知道这个后半句怎么会由前半句推出的?

不能再引用了,冒犯了太多,请多包涵。
 
管他呢,实用才最重要
 
谢谢小雨哥。
“模式讨论的,仅仅是面向对象中的很小的一个部分”,我很认同。
“回头想一想开头的那行字”
哪行字呢
 
TO:小雨哥
"不能再引用了,冒犯了太多,请多包涵。"_______有话直说无妨,不介意.

"日自省,广纳良言此君子之所德也"
 
特定场景下的同类问题的一般性解决方案 , 专家大概是这么解释的.

理解每个模式的意图[见gof的那本书中], 然后应用在需要它的地方上. 每个模式基本上都是遵循oo设计原则的. 所以 oo 设计原则是根本,而不是多态. Erich 说模式是慢慢总结出来的.
 
呵呵 多谢小雨哥的教导。。。。
还是想多了解一下模式这方面的知识 呵呵
 
哈哈,我自己还发明了一个模式呢,叫做“模块的StarUp集成技术”
是仿EXE参数调用的一种低耦合模块设计方法
内容说起来不是一句话能说完,就不说了

欢迎加入Delphi交流群:33783080
 
哈哈,我自己还发明了一个模式呢,叫做“模块的StarUp集成技术”
是仿EXE参数调用的一种低耦合模块设计方法
内容说起来不是一句话能说完,就不说了

欢迎加入Delphi交流群:33783080
 
我感觉在C/S架构建议使用平台好,因为有非常大的扩展功能。
如果是B/S架构同样建议要有这样的平台。
 
噢。还在谈这个不是问题的问题?

“特定场景下的同类问题的一般性解决方案”的解答是正确的。但这句话并不能让初次接触
模式这个名词的人带来多少豁然开朗的感觉,也不能给已经误解了模式这个名词的人带来当
头棒喝。

大富翁的barton很早以前写了一篇文章,我已经不记得具体的内容了,但我印象深刻的是文
章后面的讨论。文章大概是讲述多线程协助之类的话题,代码中,这些线程各自运行,没有
施加任何同步机制,但他们需要向同一个UI界面汇报各自的工作状况和处理的数据。其中关键
就是使用了所谓的“订阅者”模式。最有趣的是后面附和了一大批网友讨论,其中一篇评论中一
个网友突然提问说:barton,你源代码里附着的一篇小说都是错别字的说,那也太那个什么
了吧。意思是说barton放出的东西不够严谨。barton的回复是:大哥,那篇小说是网上拷贝
的,并不是代码的一部分,放在里面是为了演示这个代码中的线程如何读取这篇小说,并把
内容汇报给UI,那是给线程读的,不是给你读的。显然那位网友一不小心,也成了barton代
码中的一个“订阅者”。【 http://www.cnblogs.com/Barton131420/ 】

可以找到很多代码开宗明义地说:本代码使用了某某某模式。Asphyre的AsphyreSubsc.pas
中的一句解释是这样写的:Asphyre Publisher/Subscriber pattern implementation。这
是他写出著名的 Asphyre2D 库的第一个单元。以后,主要的流程逻辑就是在这个单元的二
个简单的实现中流转。【 http://www.afterwarp.net/ 】

soul的“编程的技巧和艺术”文章中的情况则相反,通篇连模式这个字眼都没有出现,但去
看看就知道,模式只是模式,真真的模式可以到达看不见模式的程度。【见soul相关笔记】

例举了这么多高手,有代码、有言论,我想应该够大家喝一壶了。下面我简单地对希望看看
模式的初手说二句:

1.模式确实是因为架构而起,但真正地,它可以运用在最小的代码片段中。比如一个类如何
与另一个类协作,模式就告诉了你至少应该有几种现成的模式可以使用。这样可以加快代
码的构建,帮助理清流程。

2.模式实质上是对模块的编程,它从粗粒度上对代码的实现进行了面向对象的设计。所以,
它还是面向对象的,并且仅仅是面向对象在这个方面的一棵小枝。
 
barton是个设计高手,小雨哥你也是,呵呵.
(别人天天叫你哥,你这个名字起得真好)

我的理解:
模式就是多态的灵活应用,是特定场景下的同类问题的一般性解决方案,是同类问题的;
编程&设计中 面向抽象,面向接口,而不是面向具体,面向实现.
以对象的方式来考虑问题.
有大局观.
 

Similar threads

回复
0
查看
813
不得闲
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部