第面向?qū)ο笤O(shè)計(jì)原則學(xué)習(xí)教案_第1頁(yè)
第面向?qū)ο笤O(shè)計(jì)原則學(xué)習(xí)教案_第2頁(yè)
第面向?qū)ο笤O(shè)計(jì)原則學(xué)習(xí)教案_第3頁(yè)
第面向?qū)ο笤O(shè)計(jì)原則學(xué)習(xí)教案_第4頁(yè)
第面向?qū)ο笤O(shè)計(jì)原則學(xué)習(xí)教案_第5頁(yè)
已閱讀5頁(yè),還剩50頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、會(huì)計(jì)學(xué)1第第 面向?qū)ο笤O(shè)計(jì)面向?qū)ο笤O(shè)計(jì)(shj)原則原則第一頁(yè),共55頁(yè)。Robert C.Martin第1頁(yè)/共55頁(yè)第二頁(yè),共55頁(yè)。Peter Coad第2頁(yè)/共55頁(yè)第三頁(yè),共55頁(yè)??删S護(hù)性復(fù)用都是以面向?qū)ο笤O(shè)計(jì)(shj)原則為基礎(chǔ)的,這些設(shè)計(jì)(shj)原則首先都是復(fù)用的原則,遵循這些設(shè)計(jì)(shj)原則可以有效地提高系統(tǒng)的復(fù)用性,同時(shí)提高系統(tǒng)的可維護(hù)性。第3頁(yè)/共55頁(yè)第四頁(yè),共55頁(yè)。Martin Fowler第4頁(yè)/共55頁(yè)第五頁(yè),共55頁(yè)。設(shè)計(jì)原則名稱設(shè)計(jì)原則名稱設(shè)計(jì)原則簡(jiǎn)介設(shè)計(jì)原則簡(jiǎn)介重要性重要性單一職責(zé)原則(Single Responsibility Principle,

2、SRP)類的職責(zé)要單一,不能將太多的職責(zé)放在一個(gè)類中開閉原則(Open-Closed Principle, OCP)軟件實(shí)體對(duì)擴(kuò)展是開放的,但對(duì)修改是關(guān)閉的,即在不修改一個(gè)軟件實(shí)體的基礎(chǔ)上去擴(kuò)展其功能里氏代換原則(Liskov Substitution Principle, LSP)在軟件系統(tǒng)中,一個(gè)可以接受基類對(duì)象的地方必然可以接受一個(gè)子類對(duì)象依賴倒轉(zhuǎn)原則(Dependency Inversion Principle, DIP)要針對(duì)抽象層編程,而不要針對(duì)具體類編程接口隔離原則(Interface Segregation Principle, ISP)使用多個(gè)專門的接口來(lái)取代一個(gè)統(tǒng)一的接口

3、合成復(fù)用原則(Composite Reuse Principle, CRP)在系統(tǒng)中應(yīng)該盡量多使用組合和聚合關(guān)聯(lián)關(guān)系,盡量少使用甚至不使用繼承關(guān)系迪米特法則(Law of Demeter, LoD)一個(gè)軟件實(shí)體對(duì)其他實(shí)體的引用越少越好,或者說(shuō)如果兩個(gè)類不必彼此直接通信,那么這兩個(gè)類就不應(yīng)當(dāng)發(fā)生直接的相互作用,而是通過(guò)引入一個(gè)第三者發(fā)生間接交互第5頁(yè)/共55頁(yè)第六頁(yè),共55頁(yè)。n另一種(y zhn)定義方式如下:n就一個(gè)類而言,應(yīng)該僅有一個(gè)引起它變化的原因。n其英文定義為:nThere should never be more than one reason for a class to cha

4、nge.第6頁(yè)/共55頁(yè)第七頁(yè),共55頁(yè)。n單一職責(zé)原則是實(shí)現(xiàn)高內(nèi)聚、低耦合的指導(dǎo)方針,在很多代碼重構(gòu)手法中都能找到它的存在,它是最簡(jiǎn)單但又最難運(yùn)用的原則,需要設(shè)計(jì)人員發(fā)現(xiàn)類的不同職責(zé)并將其分離,而發(fā)現(xiàn)類的多重職責(zé)需要設(shè)計(jì)人員具有較強(qiáng)的分析設(shè)計(jì)能力和相關(guān)重構(gòu)經(jīng)驗(yàn)。第7頁(yè)/共55頁(yè)第八頁(yè),共55頁(yè)。n現(xiàn)使用單一職責(zé)原則對(duì)其進(jìn)行重構(gòu)。第8頁(yè)/共55頁(yè)第九頁(yè),共55頁(yè)。第9頁(yè)/共55頁(yè)第十頁(yè),共55頁(yè)。but closed for modification.第10頁(yè)/共55頁(yè)第十一頁(yè),共55頁(yè)。第11頁(yè)/共55頁(yè)第十二頁(yè),共55頁(yè)。第12頁(yè)/共55頁(yè)第十三頁(yè),共55頁(yè)。第13頁(yè)/共55頁(yè)第十四頁(yè),共

5、55頁(yè)。第14頁(yè)/共55頁(yè)第十五頁(yè),共55頁(yè)。第15頁(yè)/共55頁(yè)第十六頁(yè),共55頁(yè)。y of type S where S is a subtype of T. 芭芭拉芭芭拉利斯科夫(利斯科夫(Barbara Liskov),美國(guó)),美國(guó)(mi u)計(jì)算機(jī)科學(xué)家,計(jì)算機(jī)科學(xué)家,2008年圖靈獎(jiǎng)得主,年圖靈獎(jiǎng)得主,2004年約翰年約翰.馮諾依曼獎(jiǎng)得主,美國(guó)馮諾依曼獎(jiǎng)得主,美國(guó)(mi u)工程院院士,美國(guó)工程院院士,美國(guó)(mi u)藝術(shù)與科學(xué)院院士,美國(guó)藝術(shù)與科學(xué)院院士,美國(guó)(mi u)計(jì)算機(jī)協(xié)會(huì)會(huì)士。現(xiàn)任麻省理工學(xué)院電子電氣與計(jì)算機(jī)科學(xué)系教授。她是美國(guó)計(jì)算機(jī)協(xié)會(huì)會(huì)士。現(xiàn)任麻省理工學(xué)院電子電氣與計(jì)

6、算機(jī)科學(xué)系教授。她是美國(guó)(mi u)第一個(gè)計(jì)算機(jī)科學(xué)女博士。第一個(gè)計(jì)算機(jī)科學(xué)女博士。周以真(周以真(Jeannette M. Wing),美國(guó)計(jì)算機(jī)科學(xué)家,卡內(nèi)基.梅隆大學(xué)教授,美國(guó)國(guó)家自然基金會(huì)計(jì)算與信息科學(xué)工程部助理部長(zhǎng),ACM和IEEE會(huì)士。第16頁(yè)/共55頁(yè)第十七頁(yè),共55頁(yè)。n里氏代換原則是實(shí)現(xiàn)開閉原則的重要方式之一,由于使用基類對(duì)象的地方都可以使用子類對(duì)象,因此在程序中盡量使用基類類型來(lái)對(duì)對(duì)象進(jìn)行定義,而在運(yùn)行時(shí)再確定其子類類型,用子類對(duì)象來(lái)替換父類對(duì)象。第17頁(yè)/共55頁(yè)第十八頁(yè),共55頁(yè)。喜歡(x huan)動(dòng)物喜歡(x huan)貓 因?yàn)樨埵莿?dòng)物 第18頁(yè)/共55頁(yè)第十九頁(yè),

7、共55頁(yè)。DataOperator一個(gè)實(shí)現(xiàn)(shxin)加密操作。如圖所示:第19頁(yè)/共55頁(yè)第二十頁(yè),共55頁(yè)。其進(jìn)行重構(gòu),使得系統(tǒng)可以靈活擴(kuò)展,符合開閉原則。第20頁(yè)/共55頁(yè)第二十一頁(yè),共55頁(yè)。第21頁(yè)/共55頁(yè)第二十二頁(yè),共55頁(yè)。nnProgram to an interface, not an implementation.第22頁(yè)/共55頁(yè)第二十三頁(yè),共55頁(yè)。第23頁(yè)/共55頁(yè)第二十四頁(yè),共55頁(yè)。倒轉(zhuǎn)原則就是面向?qū)ο笤O(shè)計(jì)的主要手段。第24頁(yè)/共55頁(yè)第二十五頁(yè),共55頁(yè)。nPut Abstractions in Code, Details in Metadatan(程序員修

8、煉之道:從小工到專家(The Pragmatic programmer: from journeyman tomaster) )第25頁(yè)/共55頁(yè)第二十六頁(yè),共55頁(yè)。第26頁(yè)/共55頁(yè)第二十七頁(yè),共55頁(yè)。第27頁(yè)/共55頁(yè)第二十八頁(yè),共55頁(yè)。第28頁(yè)/共55頁(yè)第二十九頁(yè),共55頁(yè)。(XMLTransformer)XLS文件(XLSTransformer)等。第29頁(yè)/共55頁(yè)第三十頁(yè),共55頁(yè)。對(duì)其進(jìn)行重構(gòu)。第30頁(yè)/共55頁(yè)第三十一頁(yè),共55頁(yè)。第31頁(yè)/共55頁(yè)第三十二頁(yè),共55頁(yè)。第32頁(yè)/共55頁(yè)第三十三頁(yè),共55頁(yè)?!敖巧綦x原則”。n(2) 接口僅僅提供(tgng)客戶端需要

9、的行為,即所需的方法,客戶端不需要的行為則隱藏起來(lái),應(yīng)當(dāng)為客戶端提供(tgng)盡可能小的單獨(dú)的接口,而不要提供(tgng)大的總接口。第33頁(yè)/共55頁(yè)第三十四頁(yè),共55頁(yè)。提供用戶需要的行為,而隱藏用戶不需要的行為。第34頁(yè)/共55頁(yè)第三十五頁(yè),共55頁(yè)。第35頁(yè)/共55頁(yè)第三十六頁(yè),共55頁(yè)。第36頁(yè)/共55頁(yè)第三十七頁(yè),共55頁(yè)。nFavor composition of objects over inheritance as a reuse mechanism.第37頁(yè)/共55頁(yè)第三十八頁(yè),共55頁(yè)。第38頁(yè)/共55頁(yè)第三十九頁(yè),共55頁(yè)。限的環(huán)境中使用。(“白箱”復(fù)用 )n組合/聚

10、合復(fù)用:耦合度相對(duì)較低,選擇性地調(diào)用成員對(duì)象的操作;可以在運(yùn)行時(shí)動(dòng)態(tài)進(jìn)行。(“黑箱”復(fù)用 )第39頁(yè)/共55頁(yè)第四十頁(yè),共55頁(yè)。降低復(fù)雜度,而濫用繼承(jchng)反而會(huì)增加系統(tǒng)構(gòu)建和維護(hù)的難度以及系統(tǒng)的復(fù)雜度,因此需要慎重使用繼承(jchng)復(fù)用。第40頁(yè)/共55頁(yè)第四十一頁(yè),共55頁(yè)。第41頁(yè)/共55頁(yè)第四十二頁(yè),共55頁(yè)。StudentDAOTeacherDAO的源代碼,使之繼承(jchng)新的數(shù)據(jù)庫(kù)連接類,這將違背開閉原則,系統(tǒng)擴(kuò)展性較差。n現(xiàn)使用合成復(fù)用原則對(duì)其進(jìn)行重構(gòu)。第42頁(yè)/共55頁(yè)第四十三頁(yè),共55頁(yè)。第43頁(yè)/共55頁(yè)第四十四頁(yè),共55頁(yè)。第44頁(yè)/共55頁(yè)第四十五頁(yè),共55頁(yè)。展會(huì)相對(duì)容易,這是對(duì)軟件實(shí)體之間通信的限制(xinzh),它要求限制(xinzh)軟件實(shí)體之間通信的寬度和深度。第45頁(yè)/共55頁(yè)第四十六頁(yè),共55頁(yè)。第46頁(yè)/共55頁(yè)第四十七頁(yè),共55頁(yè)。第47頁(yè)/共55頁(yè)第四十八頁(yè),共55頁(yè)。第48頁(yè)/共55頁(yè)第四十九頁(yè),共55頁(yè)。都應(yīng)當(dāng)盡量降低(jingd)其成員變量和成員函數(shù)的訪問(wèn)權(quán)限;n在類的設(shè)計(jì)上,只

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論