大象——Thinking in UML
大音希聲欧聘,大象希形, 近來閑暇忍捡,隨手翻起一些曾經(jīng)看過的書籍形葬,才發(fā)現(xiàn)又有新的收獲。
面向?qū)ο?/h2>
面向?qū)ο?/strong> 在如今的軟件行業(yè)是一個很著名的術(shù)語码荔,以至于 人們以為面向?qū)ο笫乾F(xiàn)代科學(xué)發(fā)展到一定程度才出現(xiàn)的研究成果 漩勤。
普通民眾的面向?qū)ο?/h3>
在很多人看來,面向過程 和 面向?qū)ο?/strong> 都是一種軟件技術(shù) 缩搅,例如 把面向過程歸納為結(jié)構(gòu)化程序設(shè)計(jì)越败、DFD圖、ER模型硼瓣、UC矩陣等究飞,而面向?qū)ο髣t被歸納為繼承、封裝堂鲤、多態(tài)亿傅、復(fù)用等具體的技術(shù)。
事實(shí)上瘟栖,上述的所有技術(shù)都只是人們在采用不同的方法來認(rèn)識和描述這個世界時所采用的工具葵擎。
他們都只是表征而不是本征。
大師眼中的面向?qū)ο?/h3>
接下來讓我們看看面向?qū)ο蟠髱煱胗矗簿褪荱ML創(chuàng)始人之一的 Grady Booch 在2004年IBM Developer Works Live!大會的訪談中講過的一段流傳甚廣的話:
我對面向?qū)ο缶幊痰哪繕?biāo)從來就不是復(fù)用酬滤,相反,對我來說寓涨,對象提供了一種處理復(fù)雜性問題的方式盯串、這個問題可以追溯到亞里斯多德:你把這個世界視為過程還是對象?在面向?qū)ο笈d起運(yùn)動之前戒良,編程以過程為中心体捏,例如結(jié)構(gòu)化設(shè)計(jì)方法。然而,系統(tǒng)已經(jīng)到達(dá)了超越其處理能力的復(fù)雜性極點(diǎn)译打,有了對象,我們能夠通過提升抽象級別來構(gòu)建更大的拇颅、更復(fù)雜的系統(tǒng)——我認(rèn)為奏司,這才是面向?qū)ο缶幊踢\(yùn)動的正真勝利。
- 不知讀者看完這段話后有何感想樟插?
- 您心目中的面向?qū)ο笫沁@樣的碼韵洋?
正如Booch所說的一樣,從本質(zhì)上講 面向過程 和 面向?qū)ο?/strong> 是一個古已有之的 認(rèn)識論 的問題黄锤。
之所以面向?qū)ο髸d起搪缨,是應(yīng)為這種 認(rèn)識論 能夠幫助我們構(gòu)造更為復(fù)雜的系統(tǒng)來解釋越來越復(fù)雜的現(xiàn)實(shí)世界。
認(rèn)識到這一點(diǎn)鸵熟,我們就應(yīng)該知道比掌握具體的技術(shù)更為重要的是掌握認(rèn)識論所采用的方法和分析過程副编。
只有掌握了方法才能自如地使用這些技術(shù)工具。
這個世界的本質(zhì)是由對象組成的流强,平時看上去相互無關(guān)的獨(dú)立對象在不同的驅(qū)動和規(guī)則下體現(xiàn)出不同的運(yùn)動過程痹届,然后這些過程便展現(xiàn)出來我們這個生動的世界。
在面向過程的眼中打月,世界的一切都不是孤立的队腐,然相互緊密聯(lián)系在一起,缺一不可奏篙,相互影響柴淘,互相作用,并形成一個具有嚴(yán)格因果律的小系統(tǒng)秘通;
而更多的小系統(tǒng)組成了更大的系統(tǒng)为严,所有的小系統(tǒng)之間的聯(lián)系也是緊密和不可分割的。
面向?qū)ο笏枷肫鋵?shí)并不復(fù)雜充易,但是對于習(xí)慣了以過程方法來認(rèn)識這個世界的朋友來說完全理解和接受面向?qū)ο笏枷雲(yún)s是不容易的梗脾。
如果您真的打算學(xué)習(xí)面向?qū)ο蟮姆椒ǎ敲纯峙履媒邮苓@個世界時分割開來的這個事實(shí)盹靴,并且相信只有在特定的場景下炸茧,孤立對象之間進(jìn)行了某些信息交換才表現(xiàn)出我們所看到的那樣一個過程。