物件導向設計 開閉原則(OCP)

2021-06-18 14:21:31 字數 1302 閱讀 2081

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...