面向對象的設計原則_第1頁
面向對象的設計原則_第2頁
面向對象的設計原則_第3頁
面向對象的設計原則_第4頁
面向對象的設計原則_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、2022-4-10Inspur group面向對象的設計原則張英鋒22022-4-10Inspur group在軟件開發(fā)中唯一不變的就是變化任何系統(tǒng)在其生命周期中都會發(fā)生變化。如果我們希望開發(fā)出的系統(tǒng)不會在第一版本后就被拋棄,那么我們就必須牢牢記住這一點。 Ivar Jacobson32022-4-10Inspur group軟件領域模塊設計指導原則High cohesion,Low coupling高內(nèi)聚,松耦合但是如何實現(xiàn)?42022-4-10Inspur groupOO原則原則OO設計的原則: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單一職責原則(高內(nèi)聚)單一職責原則(高內(nèi)聚)Single Responsibility Principle, SRPA class should have only one reason to chan

3、ge.對一個類而言,應該僅有一個引起它變化的原因。即一個類僅僅需要一個職責。如何理解?62022-4-10Inspur group需求的變化就是功能的變化;反映到類上就是類職責的變化;如果一個類承擔的職責過多,那么這些職責就會相互依賴,一個職責的變化可能會影響另一個職責的履行;其實OOD的實質(zhì),就是合理地進行類的職責分配。72022-4-10Inspur group開閉原則開閉原則Open-Closed Principle, OCPSoftware entities should be open for extension, but closed for modification.OO設計的第

4、一原則82022-4-10Inspur group換句話說:軟件的行為可以被擴展;但是代碼不能被修改!你認為可能嗎?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若對于每一個類型S的對象o1,都存在一個類型T的對象o2,使得在所有針對T編寫的程序P中,用o1替換o2后,程序P的行為功能不變,則S是T的子類型。102022-4-10Inspur group任何基類出現(xiàn)的地方,子類一定可以出現(xiàn)由父類承擔的職責,子類一定可以承擔,反之不成立112022-4-10Inspur group依賴倒轉原則依賴倒轉原則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.針對接口編程,而不要面向實現(xiàn)編程!注意:這里的接口不是Java里的接口類DIP是框架Framework設計的核心原則OCP是目標,DIP是實現(xiàn)目標的方法132022-4-10

7、Inspur group依賴即耦合零耦合具體耦合抽象耦合142022-4-10Inspur group謔稱“好萊塢原則” Hollywood PrincipleDont call us, well call you.152022-4-10Inspur group控制反轉Inversion of Control, IOCDependency InjectionMartin Flower162022-4-10Inspur group接口隔離原則接口隔離原則ISPInterface Segregation Principle,ISP不應該強迫客戶依賴于它們不用的方法。接口屬于客戶,不屬于它所在的類層

8、次結構。接口內(nèi)的方法應該盡可能少大的接口可以分割成小接口172022-4-10Inspur group組合組合/聚合復用原則聚合復用原則CARPComposition/Aggregation Principle, CARP在一個新的對象里面使用一些已有的對象,使之成為新對象的一部分;新的對象通過向這些對象的委派達到復用已有功能的目的。另一種說法:Favor Composition over Inheritance盡量使用類的組合復用,盡量不要使用繼承復用。182022-4-10Inspur group組合和聚合的區(qū)別組合關系緊密性強于聚合關系組合意味著生命周期相同,聚合不一定192022-4-

9、10Inspur group迪米特法則迪米特法則LoD Law of Demeter, LoD又叫做最少知識原則(Least Knowledge Principle,LKP)一個對象應當對其他對象有盡可能少的了解。迪米特法則要求任何一個軟件實體,除非絕對需要,不然不要與外界通信。即使必須進行通信,也應當盡量限制通信的廣度和深度。202022-4-10Inspur group多態(tài)的原理與實現(xiàn)多態(tài)的原理與實現(xiàn)多態(tài)與繼承多態(tài)的實現(xiàn)212022-4-10Inspur group多態(tài)是面向對象中最重要的技術是眾多面向對象的原則實現(xiàn)的核心;只有理解了多態(tài),面向對象的學習才能算是入門。222022-4-10Inspur group繼承和多態(tài)繼承層次中類之間的關系靜態(tài)的編譯時刻就確定的繼承層次中對象之間的關

溫馨提示

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

評論

0/150

提交評論