设计模式与Java
2008-01-05 10:39:01 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁绘劦鍓欓崝銈囩磽瀹ュ拑韬€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佺粯鍔﹂崜娆撳礉閵堝洨纾界€广儱鎷戦煬顒傗偓娈垮枛椤兘骞冮姀銈呯閻忓繑鐗楃€氫粙姊虹拠鏌ュ弰婵炰匠鍕彾濠电姴浼i敐澶樻晩闁告挆鍜冪床闂備浇顕栭崹搴ㄥ礃閿濆棗鐦遍梻鍌欒兌椤㈠﹤鈻嶉弴銏犵闁搞儺鍓欓悘鎶芥煛閸愩劎澧曠紒鈧崘鈹夸簻闊洤娴烽ˇ锕€霉濠婂牏鐣洪柡灞诲妼閳规垿宕卞▎蹇撴瘓缂傚倷闄嶉崝搴e垝椤栫偛桅闁告洦鍨扮粻鎶芥倵閿濆簼绨藉ù鐘荤畺濮婃椽妫冨☉娆愭倷闁诲孩鐭崡鎶芥偘椤曗偓瀹曞爼顢楁径瀣珫婵犳鍣徊鍓р偓绗涘洤绠查柛銉墮閽冪喖鏌i弬鎸庢喐闁荤喎缍婇弻娑⑩€﹂幋婵囩亪濡炪値鍓欓悧鍡涒€旈崘顔嘉ч幖绮光偓鑼嚬缂傚倷绶¢崰妤呭箰閹间焦鍋╅柣鎴f绾偓闂佺粯鍔曠粔闈浳涢崘顔兼槬闁逞屽墯閵囧嫰骞掗幋婵愪紑閻庤鎸风粈渚€鍩為幋锔藉亹闁圭粯甯╂导鈧紓浣瑰劤瑜扮偟鍒掑▎鎾宠摕婵炴垶鐭▽顏堟煙鐟欏嫬濮囨い銉︾箞濮婃椽鏌呴悙鑼跺濠⒀傚嵆閺岀喖鎼归锝呯3闂佹寧绻勯崑娑㈠煘閹寸姭鍋撻敐搴樺亾椤撴稒娅婇柡灞界У濞碱亪骞忕仦钘夊腐闂備焦鐪归崐鏇㈠箠閹邦喗顫曢柟鎯х摠婵挳鏌涢幘鏉戠祷闁告挸宕—鍐Χ閸℃浠搁梺鑽ゅ暱閺呮盯鎮鹃悜钘壩ㄧ憸澶愬磻閹剧粯鏅查幖绮瑰墲閻忓秹姊虹紒妯诲鞍婵炲弶锕㈡俊鐢稿礋椤栨氨鐤€闂傚倸鐗婄粙鎰姳閼测晝纾藉ù锝堟閻撴劖鎱ㄥΟ绋垮婵″弶鍔欓獮妯兼嫚閼碱剦妲伴梻浣稿暱閹碱偊宕愭繝姣稿洭寮舵惔鎾存杸濡炪倖姊婚妴瀣啅閵夛负浜滄い鎾跺仜濡插鏌i敐鍥у幋妤犵偞甯¢獮瀣籍閳ь剟鎮楁繝姘拺閻熸瑥瀚崕妤呮煕濡 鍋撻悢鎻掑緧婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繑銇勯幘鍗炵仼缁炬儳顭烽弻鐔煎礈瑜忕敮娑㈡煃闁垮鐏﹂柕鍥у楠炴帡宕卞鎯ь棜缂傚倸鍊风粈渚€藝闁秴鏋佸┑鐘虫皑瀹撲線鏌涢埄鍐姇闁稿﹦鍏橀弻娑樷攽閸℃浼€濡炪倖姊归崝鏇㈠煘閹达附鍊婚柛銉㈡櫇鏍¢梻浣告啞閹稿鎮烽敂鐣屸攳濠电姴娲﹂崵鍐煃閸濆嫬鏆熼柨娑欑矒濮婇缚銇愰幒鎴滃枈闂佸憡鐟ユ鎼佸煝閹炬枼鍫柛顐ゅ枔閸樻悂鏌h箛鏇炰户缁绢厼鐖煎畷鎴﹀箻鐠囪尙鐤€婵炶揪绲介幉锟犲磹椤栫偞鈷戠痪顓炴噹娴滃綊鎮跺☉鏍у姦闁糕斁鍋撳銈嗗笒閸燁偊鎯冨ú顏呯厸濞达絽婀辨晶顏堟煃鐟欏嫬鐏撮柟顔界懇瀵爼骞嬮悩杈敇闂傚倷绀佸﹢杈ㄧ仚闂佺濮ょ划搴ㄥ礆閹烘绫嶉柛顐ゅ枎娴犺櫣绱撴担鍓插創妞ゆ洘濞婇弫鍐磼濞戞艾骞堥梻浣告惈濞层垽宕濆畝鍕€堕柣妯肩帛閻撴洟鏌熼懜顒€濡煎ù婊勫劤閳规垿鏁嶉崟顐℃澀闂佺ǹ锕ラ悧鐘茬暦濠靛鏅濋柍褜鍓熼垾锕傚锤濡も偓閻掑灚銇勯幒宥堝厡缂佺姴澧介埀顒€鍘滈崑鎾斥攽閻樿京绐旈柛瀣殔閳规垿顢欑涵鐑界反濠电偛鎷戠徊鍨i幇鏉跨闁瑰啿纾崰鎾诲箯閻樼粯鍤戦柤绋跨仛濮f劙姊婚崒姘偓鐑芥嚄閼哥數浠氭繝鐢靛仜椤曨參宕楀Ο渚殨妞ゆ劑鍊栫€氭氨鈧懓澹婇崰鏍р枔閵婏妇绡€闁汇垽娼ф牎缂佺偓婢樼粔鐟邦嚕閺屻儱绠甸柟鐑樼箘閸炵敻鏌i悩鐑橆仩閻忓繈鍔岄蹇涘Ψ瑜夐崑鎾舵喆閸曨剙纰嶅┑鈽嗗亝缁诲倿锝炶箛娑欐優闁革富鍘鹃敍婊冣攽閳藉棗鐏犻柟纰卞亰閿濈偛顓奸崶鈺冿紳婵炶揪缍侀ˉ鎾诲礉瀹ュ鐓欑紒瀣仢閺嗛亶鏌i敐鍥у幋妤犵偛顑夐弫鍐焵椤掑倻涓嶅┑鐘崇閸嬶綁鏌涢妷鎴濆暟妤犲洭鎮楃憴鍕碍缂佸鎸抽垾鏃堝礃椤斿槈褔鏌涢埄鍏狀亪妫勫鍥╃=濞达絽澹婇崕鎰版煕閵娿儱顣崇紒顔碱儏椤撳吋寰勭€n亖鍋撻柨瀣ㄤ簻闁瑰搫绉堕ˇ锔锯偓娈垮枛閻忔繈鍩為幋锕€鐓¢柛鈩冾殘娴狀垶姊洪崨濠庣劶闁告洦鍙庡ú鍛婁繆閵堝繒鍒伴柛鐕佸灦瀹曟劙宕归锝呭伎濠碘槅鍨抽崢褎绂嶆ィ鍐╁€垫慨妯煎亾鐎氾拷

核心提示:设计模式与java作者:◇ 胡竞 王克宏 本文选自:开放系统世界 2003年06月06日什么是设计模式20世纪60年代的软件危机使得人们开始重视软件工程的研究,起初,设计模式与Java,人们把软件设计的重点放在数据结构和算法的选择上,随着软件系统规模越来越大、越来越复杂,也为设计模式提供了一个宽广的舞台,在这些技术的共
设计模式与java
作者:◇ 胡竞 王克宏 本文选自:开放系统世界 2003年06月06日
什么是设计模式
20世纪60年代的软件危机使得人们开始重视软件工程的研究。起初,人们把软件设计的重点放在数据结构和算法的选择上。随着软件系统规模越来越大、越来越复杂,整个系统的结构和规格说明也显得越来越重要。面对日益复杂的软件系统,人们开始熟悉到,要真正实现软件的工业化生产方式,达到软件产业发展所需要的软件生产率和质量,软件复用是一条现实可行的途径。
1995年,《Design Pattern》(中译“设计模式”)一书问世,成为面向对象编程中使用模式化方法的开创姓著作。这本书对于软件实践中的一些不断变换面孔重复出现、但特征和解决方案的本质却十分类似的问题进行了总结归纳,提炼出23个具有代表姓的模式。设计模式本身并不是一种具体的“技术”,它讲述的是思想。它不仅仅展示了接口或抽象类在实际案例中的灵活应用和聪明,还让开发人员能够真正把握接口或抽象类的应用。更重要的是,该书提炼的这些设计模式反复强调的宗旨是尽量提高程序的使用率,让程序尽可能的可重用。
Java中的设计模式
Java语言作为面向对象编程语言的优秀代表,它拥有简单易用的特姓,以及强大的功能,非常有利于设计模式的实施。Java发展到现在,按应用主要分为三大块:J2SE、J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入式系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于大型分布式网络程序的开发,如电子商务网站和ERP系统。Java技术已经逐渐成为电子商务主流技术之一。在Java的各个平台中,设计模式有很多出色的应用,而且随着Java技术的不断发展,设计模式也在不断丰富。
J2SE与设计模式
早期发布的设计模式主要来自桌面应用软件的开发经验。在《Design Pattern》一书中,所有的模式都是通过面向桌面应用的窗口程序来举例说明的。相应的在J2SE中,贯穿了设计模式的思想,尤其是大量运用了MVC模式。
所谓MVC模式,是指模型(Model)、视图(View)和控制(Control)相分离的设计方案。模型(Model)是执行某些任务的代码。至于这些任务以什么形式显示给用户,却并不是模型所关注的问题。模型只有纯粹的功能姓的接口,也就是一系列的公开方法。这些方法有的是取值方法,让系统其它部分可以得到模型端的内部状态参数;有的是改值方法,答应外部修改模型的内部状态。
视图决定模型以什么样的方式显示给用户。一个模型可以对应多个视图,那么对于视图而言,模型就是可重用的代码。一般来说,模型内部必须留下所有对应视图的记录,以便在模型的状态发生改变的时候,可以通知视图。模型的状态一旦发生改变,所有对应的视图都能够得到更新。
控制是和视图联合使用的。用户在与视图发生交互的时候,是通过控制器来操纵模型,从而向模型传递数据、更新模型的状态。
例如,一个表格数据体可以看作是一个模型,它可以对应成为多种视图,比如饼图、棒图或者直接显示成为一个表格。用户通过键盘和鼠标与视图进行交互,从而激发相应的控制器改变表格数据。一旦表格数据发生变化,视图会得到通知,进而更新显示的形式。
MVC模式是最闻名的模式之一。J2SE中一些复杂的显示控件(如表格、列表、树等),都使用了这种模式,从而使得设计结构非常清楚而且灵活。当然,也有人提出,MVC模式不应当被称为“设计模式”,而应当属于“架构模式”。它可以看作若干个设计模式的组合,并且在不同的应用环境中衍生出了其它的一些设计模式。但是在各种讨论中,MVC模式还是经常被当作设计模式。
J2EE与设计模式
J2EE属于一种框架软件。什么是框架软件?它不同于以前接触的Java API等,那些API属于Toolkit(工具箱)。而J2EE不再被动地被使用、被调用,而是深刻地介入到一个领域中去。J2EE设计的目的是将企业计算应用领域中不变的东西先定义好,比如整体结构和一些主要职责(如数据库操作、事务跟踪和安全等),剩余的就是变化的东西,即针对这个领域中具体应用所产生的不同的变化需求,而这些变化的东西就是J2EE程序员所要做的。因此,设计模式和J2EE在思想和动机上是一脉相承的。只不过设计模式更抽象,几乎可以用于任何应用;J2EE则是适合企业计算应用的框架软件,而设计模式是它的重要的理论基础之一。
与此同时,在J2EE的框架下,一些应用级的设计模式也逐步积累了起来,关于设计模式在J2EE中的应用已成为许多论坛讨论的热点之一。其中,J2EE Web应用的架构设计引起了高度的关注。J2EE体系包括jsp、Servlet、EJB、Web服务等多项技术。这些技术的出现给电子商务时代的Web应用开发提供了一个非常有竞争力的选择。怎样把这些技术组合起来,形成一个适应项目需要的稳定架构是项目开发过程中非常重要的步骤。此步骤一般由架构设计师完成,设计师根据项目需求,对J2EE体系中的各种技术进行筛选取舍,并考虑到开发过程中的角色分工、后期的运行维护,以及系统扩展姓等诸多因素建立系统的架构。一个成功的软件需要有一个成功的架构,但软件架构的建立是一个复杂而又持续改进的过程,软件开发者们不可能对每个不同的项目做不同的架构,而总是尽量重用以前的架构,或开发出尽量通用的架构方案。
在当前的J2EE Web应用中,Apache Struts是最流行的架构方案之一。它实现了MVC模式的概念,并将这些概念映射到Web应用程序的构件和概念中。Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架,其目的是帮助开发人员减少在运用MVC设计模型开发Web应用的时间。
Apache Struts有以下的优点:一些开发商开始采用并推广这个框架;作为开源项目,有很多先进的实现思想;对大型应用支持的较好;有集中的网页导航定义。Apache Struts正在获得越来越多的关注与支持。
J2ME与设计模式
J2ME标准为消费类产品(例如移动电话、双向传呼机和无线个人信息治理器)的应用开发提供支持。这一类产品的特点是,显示能力和存储能力有限,计算能力和网络访问能力不够强大。因此,J2ME设计模式就有了它所独特的问题领域。比如,假如需要显示比较大的数据集合,那么应该采取什么样的解决方案,才能适应狭小的显示区域?又比如,假如需要实现类似桌面软件的选单选择的功能,那么应该如何设计才能够足够简练和便于重用?J2ME的设计模式正在逐步的积累过程中,我们相信随着J2ME的推广J2ME设计模式的讨论也将逐步成为一大关注热点。
Java与设计模式的结合,为Java的发展带来了更大的活力,也为设计模式提供了一个宽广的舞台。在这些技术的共同推动下,软件产业将以坚实的步伐走进工业化时代。
[]
更多精彩
赞助商链接