什么是設(shè)計(jì)模式
20世紀(jì)60年代的軟件危機(jī)使得人們開始重視軟件工程的研究。起初,人們把軟件設(shè)計(jì)的重點(diǎn)放在數(shù)據(jù)結(jié)構(gòu)和算法的選擇上。隨著軟件系統(tǒng)規(guī)模越來(lái)越大、越來(lái)越復(fù)雜,整個(gè)系統(tǒng)的結(jié)構(gòu)和規(guī)格說(shuō)明也顯得越來(lái)越重要。面對(duì)日益復(fù)雜的軟件系統(tǒng),人們開始認(rèn)識(shí)到,要真正實(shí)現(xiàn)軟件的工業(yè)化生產(chǎn)方式,達(dá)到軟件產(chǎn)業(yè)發(fā)展所需要的軟件生產(chǎn)率和質(zhì)量,軟件復(fù)用是一條現(xiàn)實(shí)可行的途徑。
1995年,《Design Pattern》(中譯“設(shè)計(jì)模式”)一書問世,成為面向?qū)ο缶幊讨惺褂媚J交椒ǖ拈_創(chuàng)性著作。這本書對(duì)于軟件實(shí)踐中的一些不斷變換面孔重復(fù)出現(xiàn)、但特征和解決方案的本質(zhì)卻十分類似的問題進(jìn)行了總結(jié)歸納,提煉出23個(gè)具有代表性的模式。設(shè)計(jì)模式本身并不是一種具體的“技術(shù)”,它講述的是思想。它不僅僅展示了接口或抽象類在實(shí)際案例中的靈活應(yīng)用和智慧,還讓開發(fā)人員能夠真正掌握接口或抽象類的應(yīng)用。更重要的是,該書提煉的這些設(shè)計(jì)模式反復(fù)強(qiáng)調(diào)的宗旨是盡量提高程序的使用率,讓程序盡可能的可重用。
Java中的設(shè)計(jì)模式
Java語(yǔ)言作為面向?qū)ο缶幊陶Z(yǔ)言的優(yōu)秀代表,它擁有簡(jiǎn)單易用的特性,以及強(qiáng)大的功能,非常有利于設(shè)計(jì)模式的實(shí)施。Java發(fā)展到現(xiàn)在,按應(yīng)用主要分為三大塊:J2SE、J2ME和J2EE,這也就是Sun ONE(Open Net Environment)體系。J2SE就是Java2的標(biāo)準(zhǔn)版,主要用于桌面應(yīng)用軟件的編程;J2ME主要應(yīng)用于嵌入式系統(tǒng)開發(fā),如手機(jī)和PDA的編程;J2EE是Java2的企業(yè)版,主要用于大型分布式網(wǎng)絡(luò)程序的開發(fā),如電子商務(wù)網(wǎng)站和ERP系統(tǒng)。Java技術(shù)已經(jīng)逐漸成為電子商務(wù)主流技術(shù)之一。在Java的各個(gè)平臺(tái)中,設(shè)計(jì)模式有很多精彩的應(yīng)用,而且隨著Java技術(shù)的不斷發(fā)展,設(shè)計(jì)模式也在不斷豐富。
J2SE與設(shè)計(jì)模式
早期發(fā)布的設(shè)計(jì)模式主要來(lái)自桌面應(yīng)用軟件的開發(fā)經(jīng)驗(yàn)。在《Design Pattern》一書中,所有的模式都是通過(guò)面向桌面應(yīng)用的窗口程序來(lái)舉例說(shuō)明的。相應(yīng)的在J2SE中,貫穿了設(shè)計(jì)模式的思想,尤其是大量運(yùn)用了MVC模式。
所謂MVC模式,是指模型(Model)、視圖(View)和控制(Control)相分離的設(shè)計(jì)方案。模型(Model)是執(zhí)行某些任務(wù)的代碼。至于這些任務(wù)以什么形式顯示給用戶,卻并不是模型所關(guān)注的問題。模型只有純粹的功能性的接口,也就是一系列的公開方法。這些方法有的是取值方法,讓系統(tǒng)其它部分可以得到模型端的內(nèi)部狀態(tài)參數(shù);有的是改值方法,允許外部修改模型的內(nèi)部狀態(tài)。
視圖決定模型以什么樣的方式顯示給用戶。一個(gè)模型可以對(duì)應(yīng)多個(gè)視圖,那么對(duì)于視圖而言,模型就是可重用的代碼。一般來(lái)說(shuō),模型內(nèi)部必須留下所有對(duì)應(yīng)視圖的記錄,以便在模型的狀態(tài)發(fā)生改變的時(shí)候,可以通知視圖。模型的狀態(tài)一旦發(fā)生改變,所有對(duì)應(yīng)的視圖都能夠得到更新。
20世紀(jì)60年代的軟件危機(jī)使得人們開始重視軟件工程的研究。起初,人們把軟件設(shè)計(jì)的重點(diǎn)放在數(shù)據(jù)結(jié)構(gòu)和算法的選擇上。隨著軟件系統(tǒng)規(guī)模越來(lái)越大、越來(lái)越復(fù)雜,整個(gè)系統(tǒng)的結(jié)構(gòu)和規(guī)格說(shuō)明也顯得越來(lái)越重要。面對(duì)日益復(fù)雜的軟件系統(tǒng),人們開始認(rèn)識(shí)到,要真正實(shí)現(xiàn)軟件的工業(yè)化生產(chǎn)方式,達(dá)到軟件產(chǎn)業(yè)發(fā)展所需要的軟件生產(chǎn)率和質(zhì)量,軟件復(fù)用是一條現(xiàn)實(shí)可行的途徑。
1995年,《Design Pattern》(中譯“設(shè)計(jì)模式”)一書問世,成為面向?qū)ο缶幊讨惺褂媚J交椒ǖ拈_創(chuàng)性著作。這本書對(duì)于軟件實(shí)踐中的一些不斷變換面孔重復(fù)出現(xiàn)、但特征和解決方案的本質(zhì)卻十分類似的問題進(jìn)行了總結(jié)歸納,提煉出23個(gè)具有代表性的模式。設(shè)計(jì)模式本身并不是一種具體的“技術(shù)”,它講述的是思想。它不僅僅展示了接口或抽象類在實(shí)際案例中的靈活應(yīng)用和智慧,還讓開發(fā)人員能夠真正掌握接口或抽象類的應(yīng)用。更重要的是,該書提煉的這些設(shè)計(jì)模式反復(fù)強(qiáng)調(diào)的宗旨是盡量提高程序的使用率,讓程序盡可能的可重用。
Java中的設(shè)計(jì)模式
Java語(yǔ)言作為面向?qū)ο缶幊陶Z(yǔ)言的優(yōu)秀代表,它擁有簡(jiǎn)單易用的特性,以及強(qiáng)大的功能,非常有利于設(shè)計(jì)模式的實(shí)施。Java發(fā)展到現(xiàn)在,按應(yīng)用主要分為三大塊:J2SE、J2ME和J2EE,這也就是Sun ONE(Open Net Environment)體系。J2SE就是Java2的標(biāo)準(zhǔn)版,主要用于桌面應(yīng)用軟件的編程;J2ME主要應(yīng)用于嵌入式系統(tǒng)開發(fā),如手機(jī)和PDA的編程;J2EE是Java2的企業(yè)版,主要用于大型分布式網(wǎng)絡(luò)程序的開發(fā),如電子商務(wù)網(wǎng)站和ERP系統(tǒng)。Java技術(shù)已經(jīng)逐漸成為電子商務(wù)主流技術(shù)之一。在Java的各個(gè)平臺(tái)中,設(shè)計(jì)模式有很多精彩的應(yīng)用,而且隨著Java技術(shù)的不斷發(fā)展,設(shè)計(jì)模式也在不斷豐富。
J2SE與設(shè)計(jì)模式
早期發(fā)布的設(shè)計(jì)模式主要來(lái)自桌面應(yīng)用軟件的開發(fā)經(jīng)驗(yàn)。在《Design Pattern》一書中,所有的模式都是通過(guò)面向桌面應(yīng)用的窗口程序來(lái)舉例說(shuō)明的。相應(yīng)的在J2SE中,貫穿了設(shè)計(jì)模式的思想,尤其是大量運(yùn)用了MVC模式。
所謂MVC模式,是指模型(Model)、視圖(View)和控制(Control)相分離的設(shè)計(jì)方案。模型(Model)是執(zhí)行某些任務(wù)的代碼。至于這些任務(wù)以什么形式顯示給用戶,卻并不是模型所關(guān)注的問題。模型只有純粹的功能性的接口,也就是一系列的公開方法。這些方法有的是取值方法,讓系統(tǒng)其它部分可以得到模型端的內(nèi)部狀態(tài)參數(shù);有的是改值方法,允許外部修改模型的內(nèi)部狀態(tài)。
視圖決定模型以什么樣的方式顯示給用戶。一個(gè)模型可以對(duì)應(yīng)多個(gè)視圖,那么對(duì)于視圖而言,模型就是可重用的代碼。一般來(lái)說(shuō),模型內(nèi)部必須留下所有對(duì)應(yīng)視圖的記錄,以便在模型的狀態(tài)發(fā)生改變的時(shí)候,可以通知視圖。模型的狀態(tài)一旦發(fā)生改變,所有對(duì)應(yīng)的視圖都能夠得到更新。