?????? 最近重讀《Java與模式》這本書,為了達到比較好的學習效果,特將學習過程中的學習筆記放在blog中,希望進步大點,嘻嘻。
?????? 1. 概念
?????????? 簡而言之,人們在自己的環境中不斷發現問題和尋找問題的解決方案的時候,發現有一些問題及其解決方案不斷變換面孔重復出現,但是這些不同的面孔后面有著共同的性質,這些不同的本質就是模式.
???????2. 要素
????????? 1) 名字(Name): 一個模式必須是一個有意義的、簡短而準確的名字。一個好的名字可以使對模式的抽象變得容易。有時一個模式同時有多于一個的名字,這時候這些名字就應當作為別名列出;
??????????2)問題(Problem):每一個模式必須有一個能夠描述它的用意的問題,以便能夠說明此模式在給定的環境和力中要達到的目標和結果;
????????? 3)環境和初始環境(Context和Initial Context):模式的問題和模式的解答出現所需要的前提條件。環境說明模式的適用范圍,環境也是模式應用之前的起始位形;
????????? 4)力(Forces):力給出與模式有關的力和約束,它們能夠彼此相互作用,以及它們能實現目標所起的反作用,比如一個模式為所獲得的好處付出的代價等。要比較好地描述一個模式,就必須完整地給出所有對模式有影響的力。
??????????5)解答(Solution):相當于一個生產產品的指令,它可能包括相片、圖表、文字,用于確定模式的結構、所涉及的角色以及角色之間的協作,解答要顯示出問題是怎樣得到解答的等。解答不僅要給出靜態的結構,而且要給出動態的行為;
?????????6)舉例(Examples):可以使用一個或多個示意性的應用來說明特定的真實環境,以及模式是怎樣應用到環境上、改變環境并且給出當模式結束時的末態環境的;
???????? 7)末態環境(Resulting Context):模式應用到環境之后的狀態或位形。末態環境包括模式帶來的好的和壞的結果,以及新狀態中含有的其他問題和可能設計的其他有關系的模式;
???????? 8)推理(Rationale):推理解釋本模式的步驟、規則,以及此模式作為一個整體是如何以特定的方式解決模式的力的,以及力和模式是如何協同合作的;
?????????9)其他相關模式(Related Patterns):這一要素應當描述在現有的系統中這個模式與其他模式的靜態和動態的關系;
???????? 10)已知的應用(Known Uses):在已有系統中模式出現和應用的例子。
???????? 為什么大多數程序員的代碼中充斥如此多的if...else判斷?
?????????為什么我們用著面向對象的語言進行著如此多的面向過程編程的重用?
???????? 很多時候我們過多的注重技術表面的東西,而忽視了本應該注重的實質,雖然其中的原因也不全是因為我們自己,學校的教育、企業的急功近利等等都有一部分原因在里面。
???????? 充斥的一大堆框架,struts、hibernate、spring......, 的確為我們減輕了很多工作,但我覺得如我這樣的程序員們,也應該花點時間來學習或研究一下算法、設計模式等。努力使自己不斷提升。
???????? 當你回想自己所做的技術,發現很多時間都是在ctrl+c、ctrl+v時,你是什么感覺?
???????? 當你發現自己的創造力正在慢慢的減退時,你如何采取行動?
?????????當理想與現實發生矛盾時,你如何不解決這些矛盾?
???????? ......
???????? 變與不變,都在于自己。
???????? 我選擇了變,你們的選擇是什么呢?
?????????呵呵,就此發一點小牢騷。
???????? 祝所有的如我一樣有夢想的程序員們像個男人般去奮斗,哈哈,雖然I am a girl:)?????????????????
??????????
posted on 2007-03-11 21:13
阿蜜果 閱讀(2343)
評論(8) 編輯 收藏 所屬分類:
Design Pattern