面向?qū)ο蟮木幊趟枷?/b>
編程,很簡單,敲代碼;思想,也簡單,深思細(xì)想;編程思想,或者說思想編程,一說就知道難了,難在哪里?不是敲代碼,而是有思想的編程,人之所以區(qū)別于猿,不就是思想的差別嗎?(500字左右有彩蛋。)
現(xiàn)實(shí)世界中,任何一個操作或者是業(yè)務(wù)邏輯的實(shí)現(xiàn)都需要一個實(shí)體來完成,也就是說,實(shí)體就是動作的支配者,沒有實(shí)體,就肯定沒有動作發(fā)生!
面向過程主要是針對功能,而面向?qū)ο笾饕轻槍δ軌驅(qū)崿F(xiàn)該功能的背后的實(shí)體。面向?qū)ο髮?shí)質(zhì)上就是面向?qū)嶓w,所以當(dāng)我們使用面向?qū)ο筮M(jìn)行編程時,一定要建立這樣一個觀念:萬物皆對象!
面向?qū)ο笫窍鄬γ嫦蜻^程而言。面向?qū)ο蠛兔嫦蜻^程都是一種思想,面向?qū)ο笫俏覀兛紤]事情的方法,通常表現(xiàn)為我們是將問題的解決按照過程方式來解決呢,還是將問題抽象為一個對象來解決它。很多情況下,我們會不知不覺的按照過程方式來解決它,而不是考慮將要解決的問題抽象為對象去解決它。
面向過程簡單直接,易于入門理解,模塊化程度較低。而面向?qū)ο笙鄬τ诿嫦蜻^程較為復(fù)雜,不易理解,模塊化程度較高。
例如洗衣服這件事的不同理解(來點(diǎn)地氣)。
面向過程的方式去理解:準(zhǔn)備衣服以及相關(guān)的用品,打開洗衣機(jī),放入衣服和洗衣液,啟動洗衣機(jī)。
面向?qū)ο蟮睦斫夥椒ǎ嘿I個全自動洗衣機(jī),準(zhǔn)備要洗的衣物及用品?;蛘哒覀€人幫你洗,呵呵。
只言片語怎得盡!“陛下,臣妾做不到??!”

所謂的面向?qū)ο?,就是在編程的時候盡可能的去模擬真實(shí)的現(xiàn)實(shí)世界,按照現(xiàn)實(shí)世界中的邏輯去處理一個問題,分析問題中參與其中的有哪些實(shí)體,這些實(shí)體應(yīng)該有什么屬性和方法,我們?nèi)绾瓮ㄟ^調(diào)用這些實(shí)體的屬性和方法去解決問題。
面向?qū)ο蟮谋举|(zhì)是什么?答案是抽象。從面對的問題域抽象出解決問題所需的對象是面向?qū)ο蠓椒ǖ暮诵乃枷?。能否恰?dāng)抽象出足夠的對象類型,特別是抽象出潛在的對象是決定軟件設(shè)計(jì)好壞的關(guān)鍵。如果從更寬泛的角度講,對我們所面對的復(fù)雜問題進(jìn)行抽象,抓住本質(zhì),得出高度精煉的邏輯模型,對問題的求解具有重要的意義。從這個角度來說,抽象并不僅僅局限于對象的抽象,也包括流程和更高層的系統(tǒng)結(jié)構(gòu)。
如何選擇面向?qū)ο筮€是面向過程,對于一個有著豐富開發(fā)經(jīng)驗(yàn)的老手來說,這是個得心應(yīng)手的過程。而對于一個新手而言,其實(shí)從兩者的對比就可以看出,當(dāng)我們的業(yè)務(wù)邏輯比較簡單時,使用面向過程能更快的實(shí)現(xiàn)。但是當(dāng)我們的業(yè)務(wù)邏輯比較復(fù)雜時,為了將來的維護(hù)和擴(kuò)展,還是面向?qū)ο蟾鼮榭孔V點(diǎn)?。ㄍ低嫡f:當(dāng)年學(xué)思想政治的時候就發(fā)誓再也不學(xué)思想政治了,哪曾想還有個思想編程,再去哭45分鐘...)
?