天天看點

OCP原則——開閉原則

OCP

英文:Open-Closed Principle

中文:開閉原則

是什麼

我們要讓代碼同時滿足對擴充開放、對修改關閉着兩個屬性。

對擴充開放表示代碼的行為可以擴充。

對修改關閉表示當對代碼的行為進行擴充時,其他代碼完全不受到影響。

代碼如果同僚滿足這兩個屬性,就可以在不影響既有代碼的前提下擴充功能。

為什麼

不論什麼軟體,隻要它還在生命周期内,就一定會發生變化。而且軟體的壽命遠比我們想象的要長。是以,我們設計的軟體要既能适應變化,又能保持長期的穩定。

這就要求代碼能夠靈活應對變化,對擴充開放,對修改關閉,如果能滿足上述要求,就算需求發生變化,我們隻要給代碼添加新的行為,就能毫無風險的完成對軟體的修改。

怎麼做

我們要給代碼添加接口。

在設計具有某項功能的子產品時,如果讓子產品的使用者用戶端直接調用子產品的提供者伺服器,我們就可以說這個設計是死闆的,因為在這種情況下,如果想使用其他伺服器,還需要修改用戶端。

OCP原則——開閉原則

是以,我們在用戶端和伺服器之間為子產品的使用者設定“用戶端接口”,這個用戶端接口由伺服器實作。

OCP原則——開閉原則

這樣一來,在添加擁有新功能的伺服器時,隻要該伺服器上有用戶端接口,用戶端就可以直接調用新伺服器,我們就不用再修改代碼了,也就是說,我們可以在不修改目前代碼的前提下添加新功能。