基本介紹:
1)開閉原則(open close principle)是程式設計中最基礎,最重要的設計原則
2)乙個軟體實體如類,模組和函式應該對拓展開放(對提供方),對修改關閉(對使用方)。用抽象構建框架,用實現擴充套件細節。
3)當軟體需要變化時,盡量通過擴充套件軟體實體的行為來實現變化,而不是通過修改已有的**來實現變化。
4)程式設計中遵循其它原則,以及使用設計模式的目的就是遵循開閉原則。
案例舉例:
public
inte***ce
mailservice
首先我們定義乙個功能性介面,表示資訊服務,裡面有個傳送資訊的方法。
public
class
defaultmailservice
implements
mailservice
}
以及它的測試類:
public
class
mailservicetest
}
接著我們在它的實現類中實現傳送資訊的方法。
假如說我們已經將其功能實現完畢。等過一段時間,我們需要對此業務進行擴充套件,要求顯示出傳送資訊的時間。其中的一種寫法便是在defaultmailservice類中直接修改:
public
class
defaultmailservice
implements
mailservice
}
但是很顯然,根據開閉原則,這種做法在實際的專案中是不可取的,應當滿足對拓展開放,對修改關閉。
對於此,我們有兩種解決辦法:
第一種:通過寫一擴充套件類繼承實現類進行實現類功能的擴充套件:
新建一logmailservice類繼承defaultmailservice類並重寫其方法:
public
class
logmailservice
extends
defaultmailservice
@override
public
void
sendmsg
(string msg)
}
在其子類中對sendmsg功能進行了擴充套件
測試類修改:
public
class
mailservicetest
}
但是這種方法在某些情況下不能使用,比如當defaultmailservice用final修飾時,此類便不能被繼承。
第二種方法:通過寫擴充套件類組合於實現類進行功能的擴充套件
新建一log2mailservice擴充套件類實現mailservice介面:
public
class
log2mailservice
implements
mailservice
@override
public
void
sendmsg
(string msg)
}
實現類修改:
public
class
mailservicetest
}
思路解析圖:
OOD設計原則之開閉原則(OCP)
開閉原則ocp open close principle 被稱作是ood的基石,是ood最重要的原則之一。這個原則由大師bertrand meyer在1988年提出 汗,那個時候恐怕國內還很少人知道oo,甚至計算機為何物 software entities should be open for ex...
OOD設計原則之開閉原則(OCP)
開閉原則ocp open close principle 在維基百科的定義 在物件導向程式設計中,開閉原則規定 軟體中的物件 類,模組,函式等等 應該對擴充套件是開放的,但是對於修改是封閉的 這意味著乙個實體是允許在不改變他的源 的前提下變更他的行為。勃蘭特丶梅耶一般被認為是最早提出開閉原則這一術語...
OCP開閉原則
bertrand meyer提出此原則 模組應對擴充套件開放,對更改關閉 遵循開 閉原則的設計有兩個主要特性 1 對擴充套件開放 這意味著模組的行為可擴充套件。當需求改變時,可對模組進行擴充套件,使其具有滿足那些改變的新行為,使軟體具有適應性和靈活性。2 對更改關閉 對模組行為進行擴充套件時,不應改...