



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Design pattern使用設(shè)計模式的根本原因是為了代碼復(fù)用,增加可維護(hù)性。那么怎么 才能實現(xiàn)代碼復(fù)用呢?這里有幾個原則:"開閉"原則(Open ClosedPrin cipal)、里氏代換原則、合成復(fù)用原則。設(shè)計模式就是實現(xiàn)了這些原 則,從而達(dá)到了代碼復(fù)用、增加可維護(hù)性的目的。"開一閉"原則此原則是由"Bertrand Meyer"提出的。原文是:"Software entitiesshould be ope n for exte nsion ,but closed for modificatio n"。就是
2、說模塊應(yīng)對擴(kuò)展開放,而對修改關(guān)閉。模塊應(yīng)盡量在不修改原(是"原",指原來的代碼)代碼的情況下進(jìn)行擴(kuò)展。那么怎么擴(kuò)展呢?我們看工廠模式 "factory pattern":假設(shè)中關(guān)村有一個賣盜版盤和色情片的小子,我們給他設(shè)計一"光盤銷售管理軟件"。我們應(yīng)該先設(shè)計一 "光盤"接口。如圖:pre|<>|光盤|1+ 賣()| |巾囘而盜版盤和色情片是其子類。小子通過"DiscFactory"來管理這些光盤。代碼為:public class DiscFactorypublic static 光
3、盤 getDisc(java/la ng/Stri ng.java.html" target="_bla nk">Stri ng n ame)return ( 光盤)java/la ng/Class.java.html"target="_bla nk">Class.forName( name).getl nsta nce();有人要買盜版盤,怎么實現(xiàn)呢?public class 小子public static void mai n(java/la ng/Stri ng.java.html" target=&quo
4、t;_bla nk">Stri ng args)光盤 d=DiscFactory.getDisc(" 盜版盤");光盤賣();Design pattern如果有一天,這小子良心發(fā)現(xiàn)了,開始賣正版軟件。沒關(guān)系,我們只 要再創(chuàng)建一個"光盤"的子類"正版軟件"就可以了。不需要修改原結(jié)構(gòu)和代 碼。怎么樣?對擴(kuò)展開放,對修改關(guān)閉。"開-閉原則"工廠模式是對具體產(chǎn)品進(jìn)行擴(kuò)展,有的項目可能需要更多的擴(kuò)展性, 要對這個"工廠"也進(jìn)行擴(kuò)展,那就成了"抽象工廠模式"。里氏代換原則
5、里氏代換原則是由"Barbara Liskov"提出的。如果調(diào)用的是父類的話,那么換成子類也完全可以運行。比如:光盤d=new 盜版盤();d.賣();現(xiàn)在要將"盜版盤"類改為"色情片"類,沒問題,完全可以運行。Java編譯程序會檢查程序是否符合里氏代換原則。還記得java繼承的一個原則嗎?子類override 方法的訪問權(quán)限不能小于父類對應(yīng)方法的訪問權(quán)限。比 如"光盤"中的方法"賣"訪問權(quán)限是"public",那么"盜版盤"和"色情片"
6、;中 的"賣"方法就不能是 protected 或private ,編譯不能通過。為什么要這樣 呢?你想啊:如果"盜版盤"的"賣"方法是private。那么下面這段代碼就不 能執(zhí)行了:光盤d=new 盜版盤();d.賣();可以說:里氏代換原則是繼承復(fù)用的一個基礎(chǔ)。合成復(fù)用原則就是說要少用繼承,多用合成關(guān)系來實現(xiàn)。我曾經(jīng)這樣寫過程序:有 幾個類要與數(shù)據(jù)庫打交道,就寫了一個數(shù)據(jù)庫操作的類,然后別的跟數(shù)據(jù) 庫打交道的類都繼承這個。結(jié)果后來,我修改了數(shù)據(jù)庫操作類的一個方法, 各個類都需要改動。"牽一發(fā)而動全身"!面向?qū)ο?/p>
7、是要把波動限制在盡量小 的范圍。在Java中,應(yīng)盡量針對In terface 編程,而非實現(xiàn)類。這樣,更換子類不會影響調(diào)用它方法的代碼。要讓各個類盡可能少的跟別人聯(lián)系,"不要與陌生人說話"。這樣,城門失火,才不至于殃及池魚。擴(kuò)展性和維護(hù)性才 能提高理解了這些原則,再看設(shè)計模式,只是在具體問題上怎么實現(xiàn)這些原則而已。張無忌學(xué)太極拳,忘記了所有招式,打倒了"玄冥二老",所謂"心中無招"。設(shè)計模式可謂招數(shù),如果先學(xué)通了各種模式,又忘掉了所有模式 而隨心所欲,可謂 00之最高境界。呵呵,搞笑,搞笑!(JR)Design pattern依賴倒轉(zhuǎn)原則抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)當(dāng)依賴于抽象。要針對接口編程,而不是針對實現(xiàn)編程。傳遞參數(shù),或者在組合聚合關(guān)系中,盡量引用層次高的類。主要是在構(gòu)造對象時可以動態(tài)的創(chuàng)建各種具體對象,當(dāng)然如果一些具 體類比較穩(wěn)定,就不必在弄一個抽象類做它的父類,這樣有畫蛇添足的感 覺接口隔離原則定制服務(wù)的例子,每一個接口應(yīng)該是一種角色,不多不少,不干不該 干的事,該干的事都要干抽象類抽象類不會有實例,一般作為父類為子類繼承,一般包含這個系的共 同屬性和方法。注意:好的繼承關(guān)系中,只有葉節(jié)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【復(fù)習(xí)大串講】【中職專用】高二語文上學(xué)期期末綜合測試題(三)(職業(yè)模塊)(原卷版)
- 單位員工招聘合同范本
- 獸醫(yī)聘用勞務(wù)合同范本
- 光催化課題申報書
- 會所物資出售合同范本
- 廚具采買合同范本寫
- 吊裝合同范例簡易版本
- 醫(yī)院雇傭合同范本
- 企業(yè)各類合同范本
- 吊車及場地合作合同范本
- 車站信號自動控制(第二版) 課件 -3-6502部分
- 2024安徽教師統(tǒng)一招聘考試《小學(xué)英語》試卷真題及答案
- 2024年考研數(shù)學(xué)(一)試題卷及答案
- 尼康NikonCOOLPIXP500數(shù)碼相機(jī)(中文)說明書
- TPO防水卷材在商業(yè)建筑屋面施工方案
- 腦血管介入手術(shù)術(shù)前術(shù)后護(hù)理
- 2024解析:第九章大氣壓強-基礎(chǔ)練(解析版)
- 《會展概述》課件
- 外貿(mào)跟單工作規(guī)劃
- 火電廠汽機(jī)專業(yè)技術(shù)培訓(xùn)
- 山東濰坊2024~2025第一學(xué)期高三階段性調(diào)研監(jiān)測考試英語試題含答案
評論
0/150
提交評論