




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2022-4-10Inspur group面向?qū)ο蟮脑O(shè)計(jì)原則張英鋒22022-4-10Inspur group在軟件開(kāi)發(fā)中唯一不變的就是變化任何系統(tǒng)在其生命周期中都會(huì)發(fā)生變化。如果我們希望開(kāi)發(fā)出的系統(tǒng)不會(huì)在第一版本后就被拋棄,那么我們就必須牢牢記住這一點(diǎn)。 Ivar Jacobson32022-4-10Inspur group軟件領(lǐng)域模塊設(shè)計(jì)指導(dǎo)原則High cohesion,Low coupling高內(nèi)聚,松耦合但是如何實(shí)現(xiàn)?42022-4-10Inspur groupOO原則原則OO設(shè)計(jì)的原則:SRP, Single Responsibility PrincipleOCP, Open-Cl
2、osed PrincipleLSP, Liskov Substitution PrincipleDIP, Dependency Inversion PrincipleISP, Interface Segregation PrincipleCARP, Composition/Aggregation PrincipleLoD, Law of Demeter52022-4-10Inspur group單一職責(zé)原則(高內(nèi)聚)單一職責(zé)原則(高內(nèi)聚)Single Responsibility Principle, SRPA class should have only one reason to chan
3、ge.對(duì)一個(gè)類而言,應(yīng)該僅有一個(gè)引起它變化的原因。即一個(gè)類僅僅需要一個(gè)職責(zé)。如何理解?62022-4-10Inspur group需求的變化就是功能的變化;反映到類上就是類職責(zé)的變化;如果一個(gè)類承擔(dān)的職責(zé)過(guò)多,那么這些職責(zé)就會(huì)相互依賴,一個(gè)職責(zé)的變化可能會(huì)影響另一個(gè)職責(zé)的履行;其實(shí)OOD的實(shí)質(zhì),就是合理地進(jìn)行類的職責(zé)分配。72022-4-10Inspur group開(kāi)閉原則開(kāi)閉原則Open-Closed Principle, OCPSoftware entities should be open for extension, but closed for modification.OO設(shè)計(jì)的第
4、一原則82022-4-10Inspur group換句話說(shuō):軟件的行為可以被擴(kuò)展;但是代碼不能被修改!你認(rèn)為可能嗎?92022-4-10Inspur group里氏代換原則里氏代換原則Liskov Substitution Principle, LSP If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of T, the behaviour of P is unchanged when o1 is substituted fo
5、r o2 then S is a subtype of T. Barbara Liskov若對(duì)于每一個(gè)類型S的對(duì)象o1,都存在一個(gè)類型T的對(duì)象o2,使得在所有針對(duì)T編寫的程序P中,用o1替換o2后,程序P的行為功能不變,則S是T的子類型。102022-4-10Inspur group任何基類出現(xiàn)的地方,子類一定可以出現(xiàn)由父類承擔(dān)的職責(zé),子類一定可以承擔(dān),反之不成立112022-4-10Inspur group依賴倒轉(zhuǎn)原則依賴倒轉(zhuǎn)原則Dependency Inversion Principle, DIPa.High-level modules should not depend on low-l
6、evel modules.Both should depend on abstractions.b.Abstractions should not depend on details.Detils should depend on abstractions.要依賴于抽象,不要依賴于具體122022-4-10Inspur groupProgram to an interface, not an implementation.針對(duì)接口編程,而不要面向?qū)崿F(xiàn)編程!注意:這里的接口不是Java里的接口類DIP是框架Framework設(shè)計(jì)的核心原則OCP是目標(biāo),DIP是實(shí)現(xiàn)目標(biāo)的方法132022-4-10
7、Inspur group依賴即耦合零耦合具體耦合抽象耦合142022-4-10Inspur group謔稱“好萊塢原則” Hollywood PrincipleDont call us, well call you.152022-4-10Inspur group控制反轉(zhuǎn)Inversion of Control, IOCDependency InjectionMartin Flower162022-4-10Inspur group接口隔離原則接口隔離原則ISPInterface Segregation Principle,ISP不應(yīng)該強(qiáng)迫客戶依賴于它們不用的方法。接口屬于客戶,不屬于它所在的類層
8、次結(jié)構(gòu)。接口內(nèi)的方法應(yīng)該盡可能少大的接口可以分割成小接口172022-4-10Inspur group組合組合/聚合復(fù)用原則聚合復(fù)用原則CARPComposition/Aggregation Principle, CARP在一個(gè)新的對(duì)象里面使用一些已有的對(duì)象,使之成為新對(duì)象的一部分;新的對(duì)象通過(guò)向這些對(duì)象的委派達(dá)到復(fù)用已有功能的目的。另一種說(shuō)法:Favor Composition over Inheritance盡量使用類的組合復(fù)用,盡量不要使用繼承復(fù)用。182022-4-10Inspur group組合和聚合的區(qū)別組合關(guān)系緊密性強(qiáng)于聚合關(guān)系組合意味著生命周期相同,聚合不一定192022-4-
9、10Inspur group迪米特法則迪米特法則LoD Law of Demeter, LoD又叫做最少知識(shí)原則(Least Knowledge Principle,LKP)一個(gè)對(duì)象應(yīng)當(dāng)對(duì)其他對(duì)象有盡可能少的了解。迪米特法則要求任何一個(gè)軟件實(shí)體,除非絕對(duì)需要,不然不要與外界通信。即使必須進(jìn)行通信,也應(yīng)當(dāng)盡量限制通信的廣度和深度。202022-4-10Inspur group多態(tài)的原理與實(shí)現(xiàn)多態(tài)的原理與實(shí)現(xiàn)多態(tài)與繼承多態(tài)的實(shí)現(xiàn)212022-4-10Inspur group多態(tài)是面向?qū)ο笾凶钪匾募夹g(shù)是眾多面向?qū)ο蟮脑瓌t實(shí)現(xiàn)的核心;只有理解了多態(tài),面向?qū)ο蟮膶W(xué)習(xí)才能算是入門。222022-4-10Inspur group繼承和多態(tài)繼承層次中類之間的關(guān)系靜態(tài)的編譯時(shí)刻就確定的繼承層次中對(duì)象之間的關(guān)
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 護(hù)士怎么弄課題申報(bào)書
- 鄭州課題申報(bào)書
- 教育課題申報(bào)立項(xiàng)書范文
- 怎么搜到課題項(xiàng)目申報(bào)書
- epc和融資合同范例
- 課題立項(xiàng)申報(bào)書成果形式
- 美發(fā)教學(xué)課題申報(bào)書
- 課題申報(bào)書封面需蓋章嗎
- 農(nóng)村房產(chǎn)協(xié)議合同范例
- 包工清包合同范本
- 北琪射頻控溫?zé)崮?李健洪)
- 四年級(jí)上冊(cè)豎式計(jì)算100題及答案
- 結(jié)構(gòu)化在崗帶教手冊(cè)模板2.0
- 管道支吊架安裝工程標(biāo)準(zhǔn)圖冊(cè)直接參考使用
- 建筑施工新進(jìn)員工三級(jí)安全教育培訓(xùn)課件
- 2024年濟(jì)南歷下區(qū)九年級(jí)中考英語(yǔ)二??荚囋囶}(含答案)
- 2024屆遼寧省沈陽(yáng)市名校中考四?;瘜W(xué)試題含答案解析
- 2024年4月自考00431教學(xué)設(shè)計(jì)試題
- JTGT F20-2015 公路路面基層施工技術(shù)細(xì)則
- 7S培訓(xùn)管理教材課件(-28張)
- 社會(huì)主義核心價(jià)值觀與西方普世價(jià)值對(duì)比
評(píng)論
0/150
提交評(píng)論