設計模式中的原則和法則: 1、開閉原則: 開閉原則(Open Closed Principle,OCP)由勃蘭特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向對象軟體構造》(Object Oriented Software Construction)中提出:軟體實體應當對 ...
設計模式中的原則和法則:
1、開閉原則:
開閉原則(Open Closed Principle,OCP)由勃蘭特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向對象軟體構造》(Object Oriented Software Construction)中提出:軟體實體應當對擴展開放,對修改關閉(Software entities should be open for extension,but closed for modification),這就是開閉原則的經典定義。
開閉原則的含義是:當應用的需求改變時,在不修改軟體實體的源代碼或者二進位代碼的前提下,可以擴展模塊的功能,使其滿足新的需求。
2、里式替換原則:
里氏替換原則(Liskov Substitution Principle,LSP)由麻省理工學院電腦科學實驗室的裡斯科夫(Liskov)女士在 1987 年的“面向對象技術的高峰會議”(OOPSLA)上發表的一篇文章《數據抽象和層次》(Data Abstraction and Hierarchy)里提出來的,她提出:繼承必須確保超類所擁有的性質在子類中仍然成立(Inheritance should ensure that any property proved about supertype objects also holds for subtype objects)。
里氏替換原則通俗來講就是:子類可以擴展父類的功能,但不能改變父類原有的功能。也就是說:子類繼承父類時,除添加新的方法完成新增功能外,儘量不要重寫父類的方法。
里氏替換原則是實現開閉原則的重要方式之一。
3、依賴導致原則:
依賴倒置原則(Dependence Inversion Principle,DIP)是 Object Mentor 公司總裁羅伯特·馬丁(Robert C.Martin)於 1996 年在 C++ Report 上發表的文章。依賴倒置原則的原始定義為:高層模塊不應該依賴低層模塊,兩者都應該依賴其抽象;抽象不應該依賴細節,細節應該依賴抽象(High level modules shouldnot depend upon low level modules.Both should depend upon abstractions.Abstractions should not depend upon details. Details should depend upon abstractions)。
其核心思想是:要面向介面編程,不要面向實現編程。
依賴倒置原則是實現開閉原則的重要途徑之一,它降低了客戶與實現模塊之間的耦合。
4、單一職責原則
單一職責原則(Single Responsibility Principle,SRP)又稱單一功能原則,由羅伯特·C.馬丁(Robert C. Martin)於《敏捷軟體開發:原則、模式和實踐》一書中提出的。這裡的職責是指類變化的原因,單一職責原則規定一個類應該有且僅有一個引起它變化的原因,否則類應該被拆分(There should never be more than one reason for a class to change)。
單一職責原則的核心就是控制類的粒度大小、將對象解耦、提高其內聚性。
5、介面隔離原則
介面隔離原則(Interface Segregation Principle,ISP)要求程式員儘量將臃腫龐大的介面拆分成更小的和更具體的介面,讓介面中只包含客戶感興趣的方法。2002 年羅伯特·C.馬丁給“介面隔離原則”的定義是:客戶端不應該被迫依賴於它不使用的方法(Clients should not be forced to depend on methods they do not use)。該原則還有另外一個定義:一個類對另一個類的依賴應該建立在最小的介面上(The dependency of one class to another one should depend on the smallest possible interface)。
以上兩個定義的含義是:要為各個類建立它們需要的專用介面,而不要試圖去建立一個很龐大的介面供所有依賴它的類去調用。
介面隔離原則是為了約束介面、降低類對介面的依賴性
未完待續……