開閉原則是面向?qū)ο笤O(shè)計的一個重要原則,其定義如下:
開閉原則(Open-Closed Principle, OCP):一個軟件實體應(yīng)當(dāng)對擴(kuò)展開放,對修改關(guān)閉。即軟件實體應(yīng)盡量在不修改原有代碼的情況下進(jìn)行擴(kuò)展。
在軟件的生命周期內(nèi),因為變化、升級和維護(hù)等原因需要對軟件原有代碼進(jìn)行修改時,可能會給舊代碼中引入錯誤,也可能會使我們不得不對整個功能進(jìn)行重構(gòu),并且需要原有代碼經(jīng)過重新測試。那么勢必會對軟件的開發(fā)帶來額外的風(fēng)險和成本, 這是OCP原則要規(guī)范設(shè)計的一個主要原因,所有的設(shè)計原則都是對軟件的開發(fā),設(shè)計以及維護(hù)帶來好處的,OCP也不例外。
OCP原則是面形對象軟件設(shè)計的基本原則,其旨在指導(dǎo)如何構(gòu)建穩(wěn)定的,靈活的,易于維護(hù)的軟件。其實這個原則也是我們面向?qū)ο笤O(shè)計的一個終極要求,更是一個引導(dǎo),在軟件設(shè)計過程中要達(dá)到OCP原則其實你需要很好的遵守其他的設(shè)計原則,換句話說如果其它的設(shè)計原則都達(dá)到了那么OCP原則自然就符合了,也就是說OCP原則是其他原則綜合使用的一個考量,一個檢驗。
假如我們要設(shè)計一個叫做動物的類(Animal)在這個類中我們有一個方法叫Sound, Sound 方法主要用于發(fā)出動物的叫聲,通常我們的設(shè)計代碼如下:
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)用代碼如下:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26