程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 設計范式學習總結

設計范式學習總結

編輯:關於JAVA

從表面看,由於象TrashVisitor.java這樣的設計包含了比早期設計數量更多的代碼,所以會留下效率不高的印象。試圖用各種設計方案達到什麼目的應該是我們考慮的重點。設計范式特別適合“將發生變化的東西與保持不變的東西隔離開”。而“發生變化的東西”可以代表許多種變化。之所以發生變化,可能是由於程序進入一個新環境,或者由於當前環境的一些東西發生了變化(例如“用戶希望在屏幕上當前顯示的圖示中添加一種新的幾何形狀”)。或者就象本章描述的那樣,變化可能是對代碼主體的不斷改進。盡管廢品分類以前的例子強調了新型Trash向系統的加入,但TrashVisitor.java允許我們方便地添加新功能,同時不會對Trash結構造成干擾。TrashVisitor.java裡確實多出了許多代碼,但在Visitor裡添加新功能只需要極小的代價。如果經常都要進行此類活動,那麼多一些代碼也是值得的。
變化序列的發現並非一件平常事;在程序的初始設計出台以前,那些分析家一般不可能預測到這種變化。除非進入項目設計的後期,否則一些必要的信息是不會顯露出來的:有時只有進入設計或最終實現階段,才能體會到對自己系統一個更深入或更不易察覺需要。添加新類型時(這是“回收”例子最主要的一個重點),可能會意識到只有自己進入維護階段,而且開始擴充系統時,才需要一個特定的繼承結構。
通過設計范式的學習,大家可體會到最重要的一件事情就是本書一直宣揚的一個觀點——多形性是OOP(面向對象程序設計)的全部——已發生了徹底的改變。換句話說,很難“獲得”多形性;而一旦獲得,就需要嘗試將自己的所有設計都造型到一個特定的模子裡去。
設計范式要表明的觀點是“OOP並不僅僅同多形性有關”。應當與OOP有關的是“將發生變化的東西同保持不變的東西分隔開來”。多形性是達到這一目的的特別重要的手段。而且假如編程語言直接支持多形性,那麼它就顯得尤其有用(由於直接支持,所以不必自己動手編寫,從而節省大量的精力和時間)。但設計范式向我們揭示的卻是達到基本目標的另一些常規途徑。而且一旦熟悉並掌握了它的用法,就會發現自己可以做出更有創新性的設計。
由於《Design Patterns》這本書對程序員造成了如此重要的影響,所以他們紛紛開始尋找其他范式。隨著的時間的推移,這類范式必然會越來越多。JimCoplien(http://www.bell-labs.com/~cope主頁作者)向我們推薦了這樣的一些站點,上面有許多很有價值的范式說明:
http://st-www.cs.uiuc.edu/users/patterns
http://c2.com/cgi/wiki
http://c2.com/ppr
http://www.bell-labs.com/people/cope/Patterns/Process/index.html
http://www.bell-labs.com/cgi-user/OrgPatterns/OrgPatterns
http://st-www.cs.uiuc.edu/cgi-bin/wikic/wikic
http://www.cs.wustl.edu/~schmidt/patterns.html
http://www.espinc.com/patterns/overview.html
同時請留意每年都要召開一屆權威性的設計范式會議,名為PLOP。會議會出版許多學術論文,第三屆已在1997年底召開過了,會議所有資料均由Addison-Wesley出版。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved