2009年10月14日
#
最近在啃的書,都是大部頭,不方便隨身攜帶.于是,就在包里丟了本<設(shè)計(jì)模式解析>,以便平時(shí)沒事干的時(shí)候看.
可是由于看了的很多東西都不能立刻投入到實(shí)用中,久而久之就很容易忘記.(effective那兩本就是這樣).
于是就想在讀書的同時(shí)寫寫一些關(guān)鍵點(diǎn)以及理解,權(quán)當(dāng)加深記憶,還有鍛煉表達(dá)能力.
這個(gè)坑就獻(xiàn)給<設(shè)計(jì)模式解析>,<設(shè)計(jì)模式>這兩書吧.前者是聽到網(wǎng)上評論說不錯(cuò),讀了再讀<設(shè)計(jì)模式>會(huì)理解的更好,于是就入了.現(xiàn)在在讀.
由于這是剛看剛寫,如果有不正確的,希望賜教,見笑啦.
======================================================================
內(nèi)聚性指的是類內(nèi)部組成部分之間相互聯(lián)系的緊密程度
耦合性指的是一個(gè)類與其它類之間聯(lián)系的緊密程度
封裝變化
用類的聚合代替繼承
Facade
"為子系統(tǒng)中的一組接口提供一個(gè)統(tǒng)一的接口.Facade模式定義了一個(gè)更高層的接口,使子系統(tǒng)更加容易使用"
Facade模式是提供一個(gè)新的,更加簡單以及符合實(shí)用的接口,來使用一個(gè)復(fù)雜系統(tǒng)的子集.
我寫的那個(gè)俄羅斯方塊中的Console類,貌似就是符合Facade模式的,需要用的控制臺(tái)API(占總數(shù)的一小部分)封裝到Consol類中,使得控制方塊的顯示改變更加容易.
Adapter
"將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口.Adapter模式使原本由于接口不兼容而不能一起工作的類可以一起工作."
1.例如抽象類有接口int foo(int a,int b,bool c),其派生類A中的foo函數(shù)已經(jīng)由另外一個(gè)函數(shù)實(shí)現(xiàn),但是函數(shù)foo2只需要兩個(gè)參數(shù),則可以如下復(fù)用代碼.
int foo(int a,int b,bool c)
{
return foo2(a,b);
}
2.如果虛基類Shape有多個(gè)派生類,如Point,Square,Circle等.但是其中一個(gè)派生類已有相似實(shí)現(xiàn),如ShapeCircle,但是ShapeCircle的接口又與Shape不一致.則可在Circle中包含一個(gè)類型為ShapeCircle的數(shù)據(jù)成員,并在接口的實(shí)現(xiàn)中運(yùn)用1,以此復(fù)用代碼.
Strategy
"定義一系列的算法,把它們一個(gè)個(gè)封裝起來,并且使它們可相互替換.Strategy模式使算法可獨(dú)立于使用它的客戶而變化."
(話說,這句話真是看的人云里霧里的...)
一個(gè)類A中,擁有許多的成員函數(shù),這些函數(shù)都需要根據(jù)一些狀態(tài)進(jìn)行不同操作.如果將A當(dāng)作基類直接寫相應(yīng)狀態(tài)的派生類時(shí),隨著狀態(tài)的復(fù)雜程度增加,則會(huì)導(dǎo)致繼承層次過大,特化版本過多.
Strategy模式則是將類A中的函數(shù)封裝成虛基類,然后通過繼承A中的類成員以應(yīng)對不同的狀態(tài).
Bridge
"將抽象與其實(shí)現(xiàn)解耦,使它們都可以獨(dú)立地變化."
一個(gè)類A需要調(diào)用不同的實(shí)現(xiàn)做不同的事情,如果用繼承去解決(用某種實(shí)現(xiàn)實(shí)現(xiàn)某種事情則為1個(gè)派生類),隨著不同的實(shí)現(xiàn)(m)和不同的事情(n)的數(shù)量增長,會(huì)造成派生類數(shù)量的爆炸性增長(m*n).Bridge模式是把實(shí)現(xiàn)抽象,然后在A中持有實(shí)現(xiàn)的句柄,再通過動(dòng)態(tài)創(chuàng)建做事情(m+n).
Abstract Factor
"為創(chuàng)建一組相關(guān)或相互依賴的對象提供一個(gè)接口,而且無需指定它們的具體類."
@_@ 這個(gè)覺得定義的挺明確的,剛看完,還沒怎么思考過,有空再補(bǔ)寫...
to be continue...
2009年9月14日
#
點(diǎn)我下載
源碼亂的很,沒注釋,就不放上來了.
開學(xué)的時(shí)候,每次復(fù)習(xí)數(shù)分就覺得惡心,一惡心就想編程,于是2天弄出了這個(gè),再加上幾天的殺蟲和微調(diào)(弄那么久是因?yàn)槲也粫?huì)玩五子棋..)
本來都不敢拿出來獻(xiàn)丑.后面想,反正這個(gè)blog就是要來擺自己的編程歷程中的東西的嘛,也就弄上來了.
基于靜態(tài)判斷,如上所說,我不會(huì)玩五子棋,甚至是打敗現(xiàn)在這個(gè)版本都要費(fèi)點(diǎn)時(shí)間.所以這判斷可能會(huì)有不合理的地方,如果有心人玩過后給與指點(diǎn),則非常感謝.
之前設(shè)想的進(jìn)階AI實(shí)現(xiàn)方法,查閱一些基本資料過后,才知道叫作極大極小值算法&剪枝優(yōu)化.沒看任何詳細(xì)資料自己實(shí)現(xiàn)..應(yīng)該得花點(diǎn)時(shí)間.可惜偏偏這段時(shí)間要較忙,要割舍編程時(shí)間給別的方面,所以沒那么快能完工.
2009年8月18日
#
控制臺(tái)下的俄羅斯方塊.

exe
/Files/scut-dj/TetrisOnConsole.rar代碼
/Files/scut-dj/TetrisCode.rar//edit 090917 自己暑假燒餅 把簡單問題復(fù)雜化了 所以消行出現(xiàn)了bug..
因?yàn)樵谏蠈W(xué)期末,有幾個(gè)同學(xué)來找我說寫一個(gè)MFC下的俄羅斯方塊,因?yàn)榭紤]到自己對于MFC不是很熟,想順便學(xué)學(xué)MFC,就答應(yīng)了.
本來打算回到家后就寫一個(gè)在控制臺(tái)可以運(yùn)行的出來,結(jié)果一回到家就開始學(xué)車,每天都蒸到傻,就沒有寫了...
然后最近眼看要開學(xué)了,不寫不行了..于是就開始寫了,前兩天寫了一個(gè)初始版本,沒有調(diào)用Windows的console的API,只用刷屏(cls)的方式來下落的..看的我那個(gè)眼瞎啊...后面得知有函數(shù)可以弄的,就看鳥語版的MSDN看了一下午,弄清楚了,開始改造..今天終于完工.
前面說了要寫MFC的,為啥寫了個(gè)控制臺(tái)的呢?那是因?yàn)槲覜]有看多少M(fèi)FC啊....怨念...
7月就斷斷續(xù)續(xù)的看完了編程珠璣,后面的習(xí)題都沒做多少,8月終于過了樁考之后時(shí)間才充裕了,開始看<算法導(dǎo)論>,然后再實(shí)現(xiàn)了些算法,寫了個(gè)鏈表類什么的.就到了今天了.時(shí)間過的真快..悲劇啊.
繼續(xù)努力..
2009年6月18日
#
說來慚愧,之前給自己訂下的一堆目標(biāo),并沒有實(shí)現(xiàn)多少個(gè).
一個(gè)月前說過自己的效率低整天浪費(fèi)時(shí)間...結(jié)果一個(gè)月后看回來,做的到的時(shí)間也就是10天.
沒什么成果,這個(gè)月其實(shí)只花了5天左右編東西,其余時(shí)間也只是在看書然后寫些小東西實(shí)踐實(shí)踐而已.
編的那東西其實(shí)就是c++的大作業(yè),MFC寫的計(jì)算器.
內(nèi)核我寫的,界面舍友弄的,我改了微小部分.


==================================================================
本來自己不好意思把計(jì)劃寫出來的,怕在這高手如云的地方遭到嘲笑.
可是現(xiàn)在想想如果寫出來反而能激勵(lì)自己去完成吧?
1.暑假打算看<編程珠璣I&II>&<算法導(dǎo)論>&<算法引論>&<設(shè)計(jì)模式解析>&<MFC Windows 程序設(shè)計(jì)>
我不知道看什么書..我手頭上有這些書就先看著了.算法導(dǎo)論和MFC那本都是大部頭,不過MFC我已經(jīng)看過一些了.算法導(dǎo)論估計(jì)看不完,看一部分吧.
2.程序的話打算按照何詠師兄的建議去實(shí)現(xiàn)一些STL的功能(auto_ptr,string,vector等,當(dāng)然應(yīng)該比較粗糙),實(shí)在慚愧,現(xiàn)在才來做.
還有試著用MFC完成一個(gè)賬本.為什么要做這個(gè)奇怪的東西呢?應(yīng)為記得以前跟我女朋友說過一年之內(nèi)要做一個(gè)給她用.很不幸,我食言了.
3.調(diào)整生物鐘,盡量在1點(diǎn)前睡覺!
所以,要努力啦!
===================================================================
當(dāng)然,現(xiàn)在主要還是要忙著期末考,加油啦!
2009年5月11日
#
最近似乎都沒有怎樣的好好編程和看書,五一回家的那3天就看了看<影響力>.
然后回來的勞動(dòng)周過的更是渾渾噩噩.老被一些七零八亂的事情把時(shí)間打斷.
我總是習(xí)慣一下子拿出連續(xù)的5.6小時(shí)來看書或者編程,那樣子看一個(gè)小時(shí)書然后去弄點(diǎn)別的事情然后又回來繼續(xù)看對我來說真是困難.
慚愧,最近幾乎沒有編程.
就是之前把自己寫的長整數(shù)高精度運(yùn)算和四則運(yùn)算表達(dá)式整合在一起了,應(yīng)該是耦合度沒那么高,稍微改2行代碼就弄在一起了,然后解決了幾個(gè)bug之后就沒再弄了.
用還用的了,只是效率不佳,1/3保留1000位小數(shù)要算個(gè)幾秒...然后設(shè)計(jì)的也惡心吧.又是類又是函數(shù)的,亂七八糟,哪天再來大改一次吧.
因?yàn)橐獞?yīng)付c++的大作業(yè),所以現(xiàn)在在看<深入淺出MFC>.我沒有半點(diǎn)windows編程經(jīng)驗(yàn)..頭暈?zāi)X脹的看了350多頁,也只是有個(gè)模模糊糊的概念.
更糟糕的是沒有動(dòng)手實(shí)踐.這樣真的會(huì)變成看了和沒看一樣.
哎.感覺這段時(shí)間實(shí)在是荒廢.都沒有做些什么東西.那天何詠師兄來詢問都感覺極其不好意思了..
努力努力.
爭取這個(gè)月能把書過一遍,自己動(dòng)手做些MFC的東西,然后再重看一次講MFC框架的部分.
然后下個(gè)月就看看寫寫STL的東西啦.
2009年4月20日
#
/Files/scut-dj/parsing.rar
剛寫好,也沒有改啥了,只支持整數(shù)不支持小數(shù),然后頭文件組織的也很惡心..
類設(shè)計(jì)的也差..沒有封裝數(shù)據(jù)..
我是看了何詠師兄的文章才寫的出來的..
http://www.graphixer.com.cn/ShowWorks.asp?Type=1&ID=98
詞法分析是自己寫的..語法分析自己寫了發(fā)現(xiàn)有些bug,然后再參考一下..弄下弄下變得和教程上一樣..罪過罪過..
水平很有限啊.
水平很菜.
本來是把自己寫的一些弱智程序的c++代碼丟到QQ空間上面去的.
后面發(fā)現(xiàn)不是很合適,和平時(shí)一些牢騷堆在一起,顯得比較奇怪.
于是開始專門開blog吧.
我還屬于菜鳥..所以目前是肯定不可能有啥有意義的內(nèi)容的了.
就寫寫平時(shí)的學(xué)習(xí)歷程咯.
=================================================================
最近與牛逼的何詠師兄取得聯(lián)系,然后問了一些現(xiàn)在該怎么學(xué)習(xí)和提高自己能力的方法.
然后他就建議我先做一個(gè)四則運(yùn)算的語法分析器,然后寫一些自己的庫,例如string,vector,list什么的..
所以最近就在研究四則運(yùn)算的語法分析咯.
因?yàn)橹安恢涝~法分析結(jié)果的數(shù)據(jù)結(jié)構(gòu)是怎樣的,于是在看懂了那篇教程后,雖然明白了原理,可是在實(shí)現(xiàn)上卻遇到很多困難.
然后參加了何詠師兄開的一個(gè)SIG后才恍然大悟..
不過后面幾天又沒時(shí)間了,所以做出了一個(gè)詞法分析就沒有繼續(xù)了.今晚就來嘗試下實(shí)現(xiàn)咯
不過寫到一半?yún)s發(fā)現(xiàn)自己理解的可能還不夠透徹,總要看一下教程才寫的下去,不然總是腦子里面有構(gòu)想?yún)s實(shí)現(xiàn)不了的感覺..
然后這樣的后果就是寫出來的東西基本和教程上一樣.......
哎.
然后在SIG上也看到大名鼎鼎的vczh 陳梓翰師兄..不過沒有交流過..太敬畏了于是當(dāng)神膜拜..失策失策..
===================================================================
然后星期六去聽了那個(gè)軟件設(shè)計(jì)的講座...
第一個(gè)師兄實(shí)在讓人郁悶...用一種半夜電臺(tái)情感節(jié)目主播的腔調(diào)來講東西..然后又煩,整天來反問,設(shè)問..節(jié)奏之慢內(nèi)容之無聊(對我來說)讓人昏昏欲睡..
然后第二個(gè)個(gè)師兄講的東西基本上可以用一句話概括."請到圖書館借閱<解析極限編程---擁抱變化>"
第三個(gè)就是何詠師兄啦.他主要講了自己對于技術(shù)的一類看法.其實(shí)我是很贊同的.~
所以.自己也要努力啦!