標題:
設計模式初階段總結(jié)
[打印本頁]
作者:
xiaos
時間:
2015-4-2 22:03
標題:
設計模式初階段總結(jié)
寒假回家原計劃是好好摸摸ANDROID的,結(jié)果因為手賤拿錯書搞了范例大全回家,一水兒的范例代碼,只能用來當手冊或者習題冊,想學點理論的話這玩意兒不適合,所以就擱置了。還好順手帶了本講設計模式的書回來,姑且看一看,小小總結(jié)一下第一階段的學。
我堅信,一切所謂的思想和方法都是在建立在一種本質(zhì)和基礎之上的,那就是要以最短時間開發(fā)出最優(yōu)秀的產(chǎn)品。話雖然說的沒錯,作為學生的我,那種脫離實際的學生式的空想讓我忽略了很多十分重要的東西。比如說,實際開發(fā)過程,接手一個項目,不可能像學校里做試卷那樣是個定死的題目,而是一串時刻都在變化的需求(夸張了點,大方向基本不會變,小變化經(jīng)常出現(xiàn))。再比如說,實際開發(fā)過程并不會是單打獨斗,而是和諸位同僚一起共事合作,這種情況下的程序設計不可能任自己天馬行空,如何跟他人的代碼恰接是個十分關(guān)鍵的問題。
結(jié)合這幾點和某次實際的經(jīng)驗,感觸很深。覺得那種“土方法”編程是不可能在實踐中得以生存的(自己隨手編個小程序那不叫實踐,我說的是日后工作時干的項目)。書上曾有一文以”代碼無錯就是優(yōu)?“為開頭,我覺著很能警示人。面對書上提出的種種異?量痰木幊汰h(huán)境,我無從下手。但我很清楚,這并不只是假設,是作者自身十幾年工作歷程中經(jīng)常會出現(xiàn)的很現(xiàn)實的情況。
說了很多廢話,先談談對最根本的思想”依賴倒轉(zhuǎn)原則“和”高內(nèi)聚,低耦合“的理解。首先這兩個概念非常精辟地概括了OO中的最重要的注意事項。也正是這兩個概念才能使得OO比之傳統(tǒng)的編程有其過人之處,而不會只是一種沒有意義的只是為了標新立異的概念而已。根據(jù)我的理解,沒有這兩個概念支持下的OO編程不回歸C語言式的面向過程的老路子而不必很裝逼地面向?qū)ο。書中在描述以上兩個概念的過程中不斷讓我想到電腦主板這樣一個很具象的事物。之所以這么認為是因為我覺得,最完美的OO編程就好比是這么一臺電腦,一個程序就是這臺使用中的機箱。如何構(gòu)建這樣一臺可以使用的機箱?先做一個基礎,或者可以稱其為框架,就像主板。主板上有各種插槽,以實現(xiàn)其功能為目的的各種插槽。再往上面插上各種需要的模塊,通過電路或者導線或者其他什么的連接在一起,就可以使用。這樣做的一個顯而易見的好處就是:某一模塊壞了不必把整臺電腦都廢了換新的,顯卡壞了換顯卡,內(nèi)存壞了換內(nèi)存,僅此而90已。而且買電腦的時候選購顯卡并不需要考慮內(nèi)存是怎么樣的,是什么樣的牌子或者型號,只要考慮是否跟主板上的插槽對應的起來就行(當然有點絕對,實際配電腦的時候還是很有講究的,這里只是一種理想情況,稍后會有說明);待到買內(nèi)存的時候也只需要考慮是否能對應得上內(nèi)存插槽。如果國際上有一個統(tǒng)一的規(guī)范和標準的話,全世界所有的廠商都可以盡情地生產(chǎn)通用的設備,而不需要定制,這也是電腦硬件發(fā)展如此迅速的主要原因之一。
扯遠了,言歸正傳。以上的例子就是”高內(nèi)聚,低耦合“的體現(xiàn)——顯卡內(nèi)聚度極高,但是卻不與搭載在主板之上的其他設備相耦合,一切看起來是這么完美和令人興奮。但也可以看出來,這條原則要求的是盡可能高的內(nèi)聚和盡可能低的耦合,絕對而純粹的內(nèi)聚是不存在的,沒有耦合也是不可能的。就好比買顯卡的時候總不能太過分,總應該與其他外設處于同一水平層面,否則電腦將出現(xiàn)很多意想不到的情況。
關(guān)于依賴倒轉(zhuǎn),我理解的還很不足,至少應用到實踐中還是十分生疏困難甚至于無從下手。依賴倒轉(zhuǎn)講究的是編程要面向接口依賴接口而不能依賴具體的實現(xiàn)和細節(jié)。關(guān)于這個概念我自己也有一個例子。比如說金字塔,那么高的堆起來,上面的石頭壓在下面的石頭上,可以比作上面的石頭緊密的依賴著下面的石頭。如果提出來要換一層的石頭,那么如果要換最底層的石頭的話,毫無疑問,整座金字塔都要拆了然后才能換;如果是要換最高層的石頭,直接換了就成,工作量差距之大顯而易見。我覺得軟件開發(fā)就是堆疊金字塔,但是按本文開頭所說的”需求時刻在變化“這一觀點來看,如果不謹慎處理變化,很有可能就要面對拆了整座金字塔或者大部分金字塔的窘境了。為了避免這種慘劇,需要把最不容易變化的放在最下面,而最容易變化的放在最頂上,這樣皆大歡喜。而越是抽象的類或?qū)ο,其變化的可能性就越低。這也正是面向?qū)ο髤^(qū)別于面向過程的最顯著的特征,他們之間的差距也正是以這點最為顯著。
說了很多,沒有一句談到二十三種模式中的任何一種,因為我覺得那是沒有必要的。我一直的思想也是種依賴倒轉(zhuǎn):把絕大多數(shù)精力花在最為本質(zhì)的概念和思想上,而把具體的實現(xiàn)方式和具象的存在放在稍微次要的位置。實際并不是考試,實踐中所有東西都是開放的,沒必要死記硬背什么,但是那些思想,必須深深地印在腦海里,骨髓里,永遠傳唱……
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1