国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

設(shè)計(jì)模式與Java

2019-11-18 12:17:59
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  設(shè)計(jì)模式與java
  
  作者:◇ 胡競(jìng) 王克宏 本文選自:開(kāi)放系統(tǒng)世界 2003年06月06日
  
  什么是設(shè)計(jì)模式
  
    20世紀(jì)60年代的軟件危機(jī)使得人們開(kāi)始重視軟件工程的研究。起初,人們把軟件設(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),人們開(kāi)始熟悉到,要真正實(shí)現(xiàn)軟件的工業(yè)化生產(chǎn)方式,達(dá)到軟件產(chǎn)業(yè)發(fā)展所需要的軟件生產(chǎn)率和質(zhì)量,軟件復(fù)用是一條現(xiàn)實(shí)可行的途徑。
  
    1995年,《Design Pattern》(中譯“設(shè)計(jì)模式”)一書(shū)問(wèn)世,成為面向?qū)ο缶幊讨惺褂媚J交椒ǖ拈_(kāi)創(chuàng)姓著作。這本書(shū)對(duì)于軟件實(shí)踐中的一些不斷變換面孔重復(fù)出現(xiàn)、但特征和解決方案的本質(zhì)卻十分類似的問(wèn)題進(jìn)行了總結(jié)歸納,提煉出23個(gè)具有代表姓的模式。設(shè)計(jì)模式本身并不是一種具體的“技術(shù)”,它講述的是思想。它不僅僅展示了接口或抽象類在實(shí)際案例中的靈活應(yīng)用和聰明,還讓開(kāi)發(fā)人員能夠真正把握接口或抽象類的應(yīng)用。更重要的是,該書(shū)提煉的這些設(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)開(kāi)發(fā),如手機(jī)和PDA的編程;J2EE是Java2的企業(yè)版,主要用于大型分布式網(wǎng)絡(luò)程序的開(kāi)發(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)用軟件的開(kāi)發(fā)經(jīng)驗(yàn)。在《Design Pattern》一書(shū)中,所有的模式都是通過(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)注的問(wèn)題。模型只有純粹的功能姓的接口,也就是一系列的公開(kāi)方法。這些方法有的是取值方法,讓系統(tǒng)其它部分可以得到模型端的內(nèi)部狀態(tài)參數(shù);有的是改值方法,答應(yīng)外部修改模型的內(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)的視圖都能夠得到更新。
  
    控制是和視圖聯(lián)合使用的。用戶在與視圖發(fā)生交互的時(shí)候,是通過(guò)控制器來(lái)操縱模型,從而向模型傳遞數(shù)據(jù)、更新模型的狀態(tài)。
  
    例如,一個(gè)表格數(shù)據(jù)體可以看作是一個(gè)模型,它可以對(duì)應(yīng)成為多種視圖,比如餅圖、棒圖或者直接顯示成為一個(gè)表格。用戶通過(guò)鍵盤(pán)和鼠標(biāo)與視圖進(jìn)行交互,從而激發(fā)相應(yīng)的控制器改變表格數(shù)據(jù)。一旦表格數(shù)據(jù)發(fā)生變化,視圖會(huì)得到通知,進(jìn)而更新顯示的形式。
  
    MVC模式是最聞名的模式之一。J2SE中一些復(fù)雜的顯示控件(如表格、列表、樹(shù)等),都使用了這種模式,從而使得設(shè)計(jì)結(jié)構(gòu)非常清楚而且靈活。當(dāng)然,也有人提出,MVC模式不應(yīng)當(dāng)被稱為“設(shè)計(jì)模式”,而應(yīng)當(dāng)屬于“架構(gòu)模式”。它可以看作若干個(gè)設(shè)計(jì)模式的組合,并且在不同的應(yīng)用環(huán)境中衍生出了其它的一些設(shè)計(jì)模式。但是在各種討論中,MVC模式還是經(jīng)常被當(dāng)作設(shè)計(jì)模式。
  
  J2EE與設(shè)計(jì)模式
  
    J2EE屬于一種框架軟件。什么是框架軟件?它不同于以前接觸的Java API等,那些API屬于Toolkit(工具箱)。而J2EE不再被動(dòng)地被使用、被調(diào)用,而是深刻地介入到一個(gè)領(lǐng)域中去。J2EE設(shè)計(jì)的目的是將企業(yè)計(jì)算應(yīng)用領(lǐng)域中不變的東西先定義好,比如整體結(jié)構(gòu)和一些主要職責(zé)(如數(shù)據(jù)庫(kù)操作、事務(wù)跟蹤和安全等),剩余的就是變化的東西,即針對(duì)這個(gè)領(lǐng)域中具體應(yīng)用所產(chǎn)生的不同的變化需求,而這些變化的東西就是J2EE程序員所要做的。因此,設(shè)計(jì)模式和J2EE在思想和動(dòng)機(jī)上是一脈相承的。只不過(guò)設(shè)計(jì)模式更抽象,幾乎可以用于任何應(yīng)用;J2EE則是適合企業(yè)計(jì)算應(yīng)用的框架軟件,而設(shè)計(jì)模式是它的重要的理論基礎(chǔ)之一。
  
    與此同時(shí),在J2EE的框架下,一些應(yīng)用級(jí)的設(shè)計(jì)模式也逐步積累了起來(lái),關(guān)于設(shè)計(jì)模式在J2EE中的應(yīng)用已成為許多論壇討論的熱點(diǎn)之一。其中,J2EE Web應(yīng)用的架構(gòu)設(shè)計(jì)引起了高度的關(guān)注。J2EE體系包括jsp、Servlet、EJB、Web服務(wù)等多項(xiàng)技術(shù)。這些技術(shù)的出現(xiàn)給電子商務(wù)時(shí)代的Web應(yīng)用開(kāi)發(fā)提供了一個(gè)非常有競(jìng)爭(zhēng)力的選擇。怎樣把這些技術(shù)組合起來(lái),形成一個(gè)適應(yīng)項(xiàng)目需要的穩(wěn)定架構(gòu)是項(xiàng)目開(kāi)發(fā)過(guò)程中非常重要的步驟。此步驟一般由架構(gòu)設(shè)計(jì)師完成,設(shè)計(jì)師根據(jù)項(xiàng)目需求,對(duì)J2EE體系中的各種技術(shù)進(jìn)行篩選取舍,并考慮到開(kāi)發(fā)過(guò)程中的角色分工、后期的運(yùn)行維護(hù),以及系統(tǒng)擴(kuò)展姓等諸多因素建立系統(tǒng)的架構(gòu)。一個(gè)成功的軟件需要有一個(gè)成功的架構(gòu),但軟件架構(gòu)的建立是一個(gè)復(fù)雜而又持續(xù)改進(jìn)的過(guò)程,軟件開(kāi)發(fā)者們不可能對(duì)每個(gè)不同的項(xiàng)目做不同的架構(gòu),而總是盡量重用以前的架構(gòu),或開(kāi)發(fā)出盡量通用的架構(gòu)方案。
  
    在當(dāng)前的J2EE Web應(yīng)用中,Apache Struts是最流行的架構(gòu)方案之一。它實(shí)現(xiàn)了MVC模式的概念,并將這些概念映射到Web應(yīng)用程序的構(gòu)件和概念中。Struts這個(gè)名字來(lái)源于在建筑和舊式飛機(jī)中使用的支持金屬架,其目的是幫助開(kāi)發(fā)人員減少在運(yùn)用MVC設(shè)計(jì)模型開(kāi)發(fā)Web應(yīng)用的時(shí)間。
  
    Apache Struts有以下的優(yōu)點(diǎn):一些開(kāi)發(fā)商開(kāi)始采用并推廣這個(gè)框架;作為開(kāi)源項(xiàng)目,有很多先進(jìn)的實(shí)現(xiàn)思想;對(duì)大型應(yīng)用支持的較好;有集中的網(wǎng)頁(yè)導(dǎo)航定義。Apache Struts正在獲得越來(lái)越多的關(guān)注與支持。
  
  J2ME與設(shè)計(jì)模式
  
    J2ME標(biāo)準(zhǔn)為消費(fèi)類產(chǎn)品(例如移動(dòng)電話、雙向傳呼機(jī)和無(wú)線個(gè)人信息治理器)的應(yīng)用開(kāi)發(fā)提供支持。這一類產(chǎn)品的特點(diǎn)是,顯示能力和存儲(chǔ)能力有限,計(jì)算能力和網(wǎng)絡(luò)訪問(wèn)能力不夠強(qiáng)大。因此,J2ME設(shè)計(jì)模式就有了它所獨(dú)特的問(wèn)題領(lǐng)域。比如,假如需要顯示比較大的數(shù)據(jù)集合,那么應(yīng)該采取什么樣的解決方案,才能適應(yīng)狹小的顯示區(qū)域?又比如,假如需要實(shí)現(xiàn)類似桌面軟件的選單選擇的功能,那么應(yīng)該如何設(shè)計(jì)才能夠足夠簡(jiǎn)練和便于重用?J2ME的設(shè)計(jì)模式正在逐步的積累過(guò)程中,我們相信隨著J2ME的推廣J2ME設(shè)計(jì)模式的討論也將逐步成為一大關(guān)注熱點(diǎn)。
  
    Java與設(shè)計(jì)模式的結(jié)合,為Java的發(fā)展帶來(lái)了更大的活力,也為設(shè)計(jì)模式提供了一個(gè)寬廣的舞臺(tái)。在這些技術(shù)的共同推動(dòng)下,軟件產(chǎn)業(yè)將以堅(jiān)實(shí)的步伐走進(jìn)工業(yè)化時(shí)代。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 岳池县| 乌拉特后旗| 台北市| 剑川县| 封开县| 遂昌县| 宜春市| 武清区| 桃源县| 和林格尔县| 龙江县| 项城市| 罗甸县| 泾源县| 巴马| 清水河县| 洪湖市| 芜湖市| 东乡族自治县| 嘉黎县| 安阳县| 徐州市| 鄢陵县| 靖州| 四会市| 庆阳市| 正阳县| 麻阳| 普兰店市| 临沭县| 西宁市| 股票| 沁源县| 石城县| 宣汉县| 淮滨县| 灯塔市| 根河市| 渭源县| 长葛市| 佛坪县|