什么是設計模式
20世紀60年代的軟件危機使得人們開始重視軟件工程的研究。起初,人們把軟件設計的重點放在數據結構和算法的選擇上。隨著軟件系統(tǒng)規(guī)模越來越大、越來越復雜,整個系統(tǒng)的結構和規(guī)格說明也顯得越來越重要。面對日益復雜的軟件系統(tǒng),人們開始認識到,要真正實現軟件的工業(yè)化生產方式,達到軟件產業(yè)發(fā)展所需要的軟件生產率和質量,軟件復用是一條現實可行的途徑。
1995年,《Design Pattern》(中譯“設計模式”)一書問世,成為面向對象編程中使用模式化方法的開創(chuàng)性著作。這本書對于軟件實踐中的一些不斷變換面孔重復出現、但特征和解決方案的本質卻十分類似的問題進行了總結歸納,提煉出23個具有代表性的模式。設計模式本身并不是一種具體的“技術”,它講述的是思想。它不僅僅展示了接口或抽象類在實際案例中的靈活應用和智慧,還讓開發(fā)人員能夠真正掌握接口或抽象類的應用。更重要的是,該書提煉的這些設計模式反復強調的宗旨是盡量提高程序的使用率,讓程序盡可能的可重用。
Java中的設計模式
Java語言作為面向對象編程語言的優(yōu)秀代表,它擁有簡單易用的特性,以及強大的功能,非常有利于設計模式的實施。Java發(fā)展到現在,按應用主要分為三大塊:J2SE、J2ME和J2EE,這也就是Sun ONE(Open Net Environment)體系。J2SE就是Java2的標準版,主要用于桌面應用軟件的編程;J2ME主要應用于嵌入式系統(tǒng)開發(fā),如手機和PDA的編程;J2EE是Java2的企業(yè)版,主要用于大型分布式網絡程序的開發(fā),如電子商務網站和ERP系統(tǒng)。Java技術已經逐漸成為電子商務主流技術之一。在Java的各個平臺中,設計模式有很多精彩的應用,而且隨著Java技術的不斷發(fā)展,設計模式也在不斷豐富。
J2SE與設計模式
早期發(fā)布的設計模式主要來自桌面應用軟件的開發(fā)經驗。在《Design Pattern》一書中,所有的模式都是通過面向桌面應用的窗口程序來舉例說明的。相應的在J2SE中,貫穿了設計模式的思想,尤其是大量運用了MVC模式。
所謂MVC模式,是指模型(Model)、視圖(View)和控制(Control)相分離的設計方案。模型(Model)是執(zhí)行某些任務的代碼。至于這些任務以什么形式顯示給用戶,卻并不是模型所關注的問題。模型只有純粹的功能性的接口,也就是一系列的公開方法。這些方法有的是取值方法,讓系統(tǒng)其它部分可以得到模型端的內部狀態(tài)參數;有的是改值方法,允許外部修改模型的內部狀態(tài)。
視圖決定模型以什么樣的方式顯示給用戶。一個模型可以對應多個視圖,那么對于視圖而言,模型就是可重用的代碼。一般來說,模型內部必須留下所有對應視圖的記錄,以便在模型的狀態(tài)發(fā)生改變的時候,可以通知視圖。模型的狀態(tài)一旦發(fā)生改變,所有對應的視圖都能夠得到更新。
控制是和視圖聯(lián)合使用的。用戶在與視圖發(fā)生交互的時候,是通過控制器來操縱模型,從而向模型傳遞數據、更新模型的狀態(tài)。
例如,一個表格數據體可以看作是一個模型,它可以對應成為多種視圖,比如餅圖、棒圖或者直接顯示成為一個表格。用戶通過鍵盤和鼠標與視圖進行交互,從而激發(fā)相應的控制器改變表格數據。一旦表格數據發(fā)生變化,視圖會得到通知,進而更新顯示的形式。
MVC模式是最著名的模式之一。J2SE中一些復雜的顯示控件(如表格、列表、樹等),都使用了這種模式,從而使得設計結構非常清晰而且靈活。當然,也有人提出,MVC模式不應當被稱為“設計模式”,而應當屬于“架構模式”。它可以看作若干個設計模式的組合,并且在不同的應用環(huán)境中衍生出了其它的一些設計模式。但是在各種討論中,MVC模式還是常常被當作設計模式。
相關推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |