開(kāi)閉原則是面向?qū)ο笤O(shè)計(jì)的一個(gè)重要原則,其定義如下:
開(kāi)閉原則(Open-Closed Principle, OCP):一個(gè)軟件實(shí)體應(yīng)當(dāng)對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。即軟件實(shí)體應(yīng)盡量在不修改原有代碼的情況下進(jìn)行擴(kuò)展。
在軟件的生命周期內(nèi),因?yàn)樽兓?、升?jí)和維護(hù)等原因需要對(duì)軟件原有代碼進(jìn)行修改時(shí),可能會(huì)給舊代碼中引入錯(cuò)誤,也可能會(huì)使我們不得不對(duì)整個(gè)功能進(jìn)行重構(gòu),并且需要原有代碼經(jīng)過(guò)重新測(cè)試。那么勢(shì)必會(huì)對(duì)軟件的開(kāi)發(fā)帶來(lái)額外的風(fēng)險(xiǎn)和成本, 這是OCP原則要規(guī)范設(shè)計(jì)的一個(gè)主要原因,所有的設(shè)計(jì)原則都是對(duì)軟件的開(kāi)發(fā),設(shè)計(jì)以及維護(hù)帶來(lái)好處的,OCP也不例外。
OCP原則是面形對(duì)象軟件設(shè)計(jì)的基本原則,其旨在指導(dǎo)如何構(gòu)建穩(wěn)定的,靈活的,易于維護(hù)的軟件。其實(shí)這個(gè)原則也是我們面向?qū)ο笤O(shè)計(jì)的一個(gè)終極要求,更是一個(gè)引導(dǎo),在軟件設(shè)計(jì)過(guò)程中要達(dá)到OCP原則其實(shí)你需要很好的遵守其他的設(shè)計(jì)原則,換句話說(shuō)如果其它的設(shè)計(jì)原則都達(dá)到了那么OCP原則自然就符合了,也就是說(shuō)OCP原則是其他原則綜合使用的一個(gè)考量,一個(gè)檢驗(yàn)。
假如我們要設(shè)計(jì)一個(gè)叫做動(dòng)物的類(Animal)在這個(gè)類中我們有一個(gè)方法叫Sound, Sound 方法主要用于發(fā)出動(dòng)物的叫聲,通常我們的設(shè)計(jì)代碼如下:
public class Animal { public void Sound(string animal) { switch (animal) { case "dog": System.Console.WriteLine("woof woof woof..."); break; case "cate": Console.WriteLine("miaow miaow miaow..."); break; } } }
客戶端的調(diào)用代碼如下:
網(wǎng)友評(píng)論