作者remmurds (雷穆尔德‧小一)
看板Soft_Job
标题Re: [请益] 请问学哪个比较实用
时间Fri Feb 19 13:47:17 2010
※ 引述《Smurf (哈里欧)》之铭言:
: 我表达能力不够好 让大大误会了 想学C++是因为我想知道封装的实作细节
: 例如Java的ArrayList其实就是先预设一个size
: 超过这个size要重新配置 所以元素太多时用ArrayList效能会降低
: LinkedList的实做就是Double Linked List资料结构 要用哪个视情况而定
你还是没看懂我在说什麽。想知道封装的细节跟想学C++有什麽绝对的关连?请自行
搜寻一下天●书局的网站,看看那些以资料结构为主题的书是不是都只用C++。
再强调一次,就资料结构或演算法而言,学哪种语言根本不是重点。如果一开始就被
语言绑住,就会像我一个学弟先前闹出的笑话:「我学的是Python,我没办法写链结串列
耶。」永远只绕着「某某function或operator要怎麽用」之类的问题打转,至於真正要学
的资料结构呢?演算法呢?早就不知道被抛到哪去了吧。
: delegate是从Observer Pattern演变而来
: 把Observer Pattern的通知者和观察者耦和消除 用哪个也是视情况而定
这是题外话。Observer Pattern是delegate或传统function point的应用之一,我实
在看不懂为什麽你会认为delegate是从Observer Pattern演变而来的。上一篇回覆会跟你
提到function point就是因为C#的delegate是基於安全性考量而把它封装成类别的产物,
所有自订的delegate都是它的衍生类别,C#本身并不存在独立的function point。
: 演算法我涉猎的比较少
: 只知道复杂度的算法 用排序和Divide&Conquer增进程式效能
: 分析法和Dynamic Programming和其他的方法我还不太会实做 我觉得很难 可能我比较
: 学Windows programming是因为想知道OS层的东西
不知所云。
--
「我从来都不喜欢 MFC,从一开始就不喜欢,我认为它的设计不良,
且几乎不能算是物件导向。」
- Charles Petzold
http://reassert.blogspot.com http://iyoyo.info/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.41.81
1F:推 phantom400:回的不错:) 02/19 15:18
2F:→ arenda:导正视听: 先有observer pattern才有delegate 02/19 16:13
没错,但是「delegate是从observer pattern演变而来」这种说法绝对会让人笑掉大
牙。delegate确实可以拿来实作这玩意儿,但不表示delegate是因它而诞生的。
3F:→ atst2:delegate就是delegate,跟observer,或function point无关. 02/19 16:25
4F:→ atst2:真要说的话,delegate比较类似一种Template method的变型 02/19 16:25
http://msdn.microsoft.com/zh-tw/library/system.delegate.aspx
注意事项下方的第一段:「当委派表示在其第一个引数上关闭的执行个体方法时(最
常见的案例),委派会储存方法进入点(Entry Point)的参考和物件的参考」
事实上在我眼中无论是function point、method reference、callback还是delegate
其实都是大同小异的碗糕,差别只在於安不安全与便不便利罢了。delegate是我认为C#做
得比Java还要好的地方之一,只不过了解它好用的地方的人似乎并不多。
当然这只是我个人使用经验的心得,有什麽不足之处欢迎补充说明了。
※ 编辑: remmurds 来自: 114.32.41.81 (02/19 18:32)
5F:→ atst2:您所提出的是.Net的Delegate类别,这和实际的pattern是有差的 02/19 23:58
6F:→ atst2:至於注意事项的描述,看来是讲实作的细节,而不是具体描述 02/19 23:59
7F:→ atst2:这个Pattern要解决什麽?想要达成什麽? 02/20 00:00
8F:推 yauhh:你说那学弟Python不知怎麽做linked list,可谈谈你的见解吗? 02/20 16:09
9F:→ ykjiang:Python 要写 linked list 绝对可以;但没这个必要 02/27 14:24