1.概念
物件導向設計的乙個原則,開閉原則(ocp)
就是說,軟體中的模組,類,以及功能,應該能夠在不修改現有**的基礎上增加新功能
「開」指的是元件功能的擴充套件是開放的
「閉」指的是現有的**是關閉的
實現開閉原則最關鍵的是「抽象」,就是將系統所有可能的行為抽象成乙個抽象底層,然後這個抽象底層提供所有具體實現的方法特徵,所以這要求對系統的設計有一定的預見性
具有一定的理想主義色彩,是物件導向設計的終極目標
2.舉例
animal, cat, dog
animal都會吃會睡,cat還會catch mouse
inte***ce animal
class cat implements animal
@override
public void eat()
@override
public void sleep()
public void catchmouse()
}class dog implements animal
@override
public void sleep() }
public class testanimal
}
現在有需求,加入「燕子會飛」這個功能
1.燕子也是動物,也會吃會睡
2.不是所有動物都會飛,我們可以歸為鳥類
只需增加如下**:
abstract class bird implements animal
class swallow extends bird
@override
public void sleep()
@override
public void fly()
}
所以這一部分的設計是符合開閉原則。
3.不足
上述例子中,如果加入一種功能「馬會跑」
1.馬是動物,會吃會睡
2.貓狗也會跑
所以在去增加這個功能時就會破壞現有的**
原因在於對於動物,鳥類,爬行類等動物以及可能的行為沒有有乙個完整的預見性,如果事前能夠預料到會有此類功能,可以再增加乙個爬行抽象類,加入跑這個行為即可。
但是對於未來可能發生的事情誰都無法預料,也就是前面說的理想主義。
但是有一點,在現有需求的基礎之上,可以實現一定範圍內的擴充套件。
物件導向設計之開閉原則(OCP)
開閉原則 open closed principle,ocp 開閉原則 ocp 是物件導向設計中 可復用設計 的基石,是物件導向設計中最重要的原則之一,其它很多的設計原則都是實現開閉原則的一種手段。1988年,勃蘭特 梅耶 bertrand meyer 在他的著作 物件導向軟體構造 object o...
漫談物件導向基石之開閉原則(OCP)
開閉原則的意思是軟體實體應該對擴充套件開發,對修改關閉 software entities should be open for extension,but closed for modification 實現開閉原則的途徑是抽象,將需要擴充套件的部分抽象出來,並留出擴充套件介面。打個比方,比如電腦...
物件導向設計原則 開閉原則
在軟體開發中,為了提高軟體系統的可維護性和可復用性,增加軟體的可擴充套件性和靈活性,程式設計師要盡量根據 7條原則來開發程式,從而提高軟體開發效率 節約軟體開發成本和維護成本。我們將在下面的幾節中依次來介紹這 7 條原則,本節首先介紹開閉原則。開閉原則 open closed principle,o...