如何學習和理解設計模式?
——對任何事物或原理的研究和學習,一定要始終記住一個要點:只有思維先進入這一層,也就是在大腦里形成分析該問題的上下文環境,在這個基礎上,然后再用想關的思維方式考慮問題,才是清晰的,才是正確的。尤其是對深層原理和技術,必須是這樣。
好的。回到設計模式的話題上,無疑的,設計模式應該說是面向對象程序設計中較高層也較深入的研究方向了。我們先理解什么是模式和設計模式,這里,好像也并沒有一個統一說明該術語的解釋,但是我覺得《設計模式》一書中的這一句就可以了:
Christopher Alexander說過:“每一個模式描述了一個在我們周圍不斷重復發生的問題,以及該問題的解決方案的核心。這樣,你就能一次又一次地使用該方案而不必做重復勞動”[AIS+77,第10頁]。盡管Alexander所指的是城市和建筑模式,但他的思想也同樣適用于面向對象設計模式,只是在面向對象的解決方案里,我們用對象和接口代替了墻壁和門窗。兩類模式的核心都在于提供了相關問題的解決方案。
這一句,首先從建筑的角度闡述了模式的概念,模式本身說明了我們周圍無數問題之間都充滿的共性,而將這引入面向對象程序設計領域,自然也充滿了相同的地方,發現這些方案的核心并提煉出其中的架構,就是我們通俗講的設計模式。
知其然,那又如何理解和學習其所以然呢?
要記住,設計模式是建立在面向對象基礎上,用于解決類和對象的設計和之間相互通信的技術。所以當學習和理解設計模式時,首先我們面對和考慮的問題域應該已經是類和對象了,而不是對現實問題或世界的建模或者別的什么,不然我們很可能就會墜入永無天日的深淵!
而明白了這個關鍵的要素,下面的進展就是水到渠成了。利用設計模式這些有效的方案和架構,幫助我們分解合適的對象,控制對象的粒度,指定對象的接口,最后到描述對象的實現,多加研究和練習,我們就能很好的運用設計模式設計出架構清晰,可復用性好的程序了。
總結:本篇文章全是思想層面的講述,文字簡短但是其中有的意思是很深刻的,可能需要在不斷的學習和實踐中加深理解。但是最關鍵的,也是突破最大障礙的銀彈是上文說過的一句話,此處再著重強調:
對任何事物或原理的研究和學習,一定要始終記住一個要點:只有思維先進入這一層,也就是在大腦里形成分析該問題的上下文環境,在這個基礎上,然后再用想關的思維方式考慮問題,才是清晰的,才是正確的。尤其是對深層原理和技術,必須是這樣。