開閉原則是物件導向開發中所有設計原則的核心
名稱:開閉原則
(open closed principle)ocp
核心:乙個物件對擴充套件開放,對修改關閉。換言之:程式中的實體物件(模組、類、方法等)應該可以進行擴充套件,但不應該可以修改。對類的修改是通過增加**實現的,而不能通過修改**實現。
例子:例如我們設計乙個animal類:
1 public class animal
6 }
設計乙個cat類繼承animal類:
1 public class cat extends animal
5 }
客戶端測試**:
1 public class testcat
7 }執行結果:
呼吸!貓抓老鼠!
如果現在有乙隻超強的貓,叫mimi的也會游泳:實現過程如下:
設計乙個animal類:
1 public class animal
6 }
設計乙個cat類繼承animal類:
1 public class cat extends animal
5 }
設計乙個mimicat類:
1 public class mimicat extends cat
5 }
客戶端測試**:
1 public class testcat
13 }
執行結果:
呼吸!貓抓老鼠!
超強貓mimi的行為:
呼吸!貓抓老鼠!
咪咪在游泳!
請按 enter 或其它命令繼續
在這個過程中,對cat擴充套件成mimicat時,是通過新增**實現,並沒有修改cat的**,對原來使用cat類的**是沒有影響的。
總結:上邊的mimicat類作為cat的子類,復用cat和animal的**。並在父類的基礎上新增新的行為。在物件導向的程式設計中,繼承是抽象化的具體實現。
優點:開放封閉原則的核心是面向抽象程式設計,而不是面向具體程式設計,抽象是相對穩定的,讓類依賴與抽象,對修改來說就是封閉的。物件導向程式設計中的繼承及多型機制,可以實現對抽象體的繼承,重寫方法改變其固有行為,實現新的方法,達到擴充套件開放的目標。
後記:物件導向程式設計中,通過
繼承實現對類的擴充套件,實現封閉修改和擴充套件開發的目地。
物件導向程式設計思想
舉個最簡單點的例子來區分 有一天要請客吃飯,怎麼辦?有兩個方法 1 買菜,買調料,買肉,買酒水,然後下廚房動手炒菜 2 去飯店,點個 看出來區別了嗎?方法1是面向過程,方法2是物件導向。物件導向有什麼優勢?首先不需要知道各種菜式是怎麼做的,降低了耦合性。如果突然想換 了,對於方法1可能不太容易,因為...
物件導向程式設計思想
所謂的物件導向,是一種程式設計思想,程式設計思路,的書寫格式,複雜程式的封裝,封裝成其他形式,使用物件導向的方式來封裝程式。物件導向 有封裝好的物件導向的的程式 直接呼叫執行就可以了 功能和作用類似於 封裝好的函式 但是 封裝的語法和思想與函式不同 物件導向的基本思想 基本思路就是,建立乙個物件,給...
物件導向程式設計思想
介面是為了處理各個物件之間的協作關係,是系統設計的關鍵部分,主要作用是為了將 定義 與 實現 分離,從而實現系統解耦的目的。在系統設計之初,我們要為抽象類建立行為模型 為什麼要面向介面程式設計?因為物件導向設計原則為我們提供了方法和原則 七大原則 開 面向擴充套件開放,面向修改關閉 口 介面隔離原則...