# 設(shè)計(jì)原則與思想 --- 對(duì)擴(kuò)展開放抢埋、修改關(guān)閉(開閉原則OCP)

1.如何理解“對(duì)擴(kuò)展開放、修改關(guān)閉”督暂?

SOLID 原則并非單純的 1 個(gè)原則揪垄,而是由 5 個(gè)設(shè)計(jì)原則組成的,它們分別是:單一職責(zé)原則逻翁、開閉原則饥努、里式替換原則、接口隔離原則和依賴反轉(zhuǎn)原則八回,依次對(duì)應(yīng) SOLID 中的 S酷愧、O驾诈、L、I溶浴、D 這 5 個(gè)英文字母乍迄。

開閉原則的英文全稱是 Open Closed Principle,簡(jiǎn)寫為 OCP士败。它的英文描述是:software entities (modules, classes, functions, etc.) should be open for extension , but closed for modification闯两。我們把它翻譯成中文就是:軟件實(shí)體(模塊、類谅将、方法等)應(yīng)該“對(duì)擴(kuò)展開放漾狼、對(duì)修改關(guān)閉”.

添加一個(gè)新的功能,應(yīng)該是通過(guò)在已有代碼基礎(chǔ)上擴(kuò)展代碼(新增模塊饥臂、類逊躁、方法、屬性等)隅熙,而非修改已有代碼(修改模塊稽煤、類、方法猛们、屬性等)的方式來(lái)完成念脯。
關(guān)于定義,我們有兩點(diǎn)要注意弯淘。第一點(diǎn)是,開閉原則并不是說(shuō)完全杜絕修改吉懊,而是以最小的修改代碼的代價(jià)來(lái)完成新功能的開發(fā)庐橙。第二點(diǎn)是,同樣的代碼改動(dòng)借嗽,在粗代碼粒度下态鳖,可能被認(rèn)定為“修改”;在細(xì)代碼粒度下恶导,可能又被認(rèn)定為“擴(kuò)展”浆竭。

2. 如何做到“對(duì)擴(kuò)展開放、修改關(guān)閉”惨寿?

我們要時(shí)刻具備擴(kuò)展意識(shí)邦泄、抽象意識(shí)、封裝意識(shí)(偏頂層的指導(dǎo)思想)裂垦。在寫代碼的時(shí)候顺囊,我們要多花點(diǎn)時(shí)間思考一下,這段代碼未來(lái)可能有哪些需求變更蕉拢,如何設(shè)計(jì)代碼結(jié)構(gòu)特碳,事先留好擴(kuò)展點(diǎn)诚亚,以便在未來(lái)需求變更的時(shí)候,在不改動(dòng)代碼整體結(jié)構(gòu)午乓、做到最小代碼改動(dòng)的情況下站宗,將新的代碼靈活地插入到擴(kuò)展點(diǎn)上。

很多設(shè)計(jì)原則益愈、設(shè)計(jì)思想梢灭、設(shè)計(jì)模式,都是以提高代碼的擴(kuò)展性為最終目的的腕唧。特別是 23 種經(jīng)典設(shè)計(jì)模式或辖,大部分都是為了解決代碼的擴(kuò)展性問(wèn)題而總結(jié)出來(lái)的,都是以開閉原則為指導(dǎo)原則的枣接。最常用來(lái)提高代碼擴(kuò)展性的方法有:多態(tài)颂暇、依賴注入、基于接口而非實(shí)現(xiàn)編程但惶,以及大部分的設(shè)計(jì)模式(比如耳鸯,裝飾、策略膀曾、模板县爬、職責(zé)鏈、狀態(tài))添谊。

3. 討論區(qū)記錄

@下雨天

對(duì)拓展開放是為了應(yīng)對(duì)變化(需求)财喳,對(duì)修改關(guān)閉是為了保證已有代碼的穩(wěn)定性;最終結(jié)果是為了讓系統(tǒng)更有彈性斩狱!

@辣么大

開閉原則:基于接口或抽象實(shí)現(xiàn)“封閉”耳高,基于實(shí)現(xiàn)接口或繼承實(shí)現(xiàn)“開放”(拓展)。通過(guò)“抽象-具體”體現(xiàn)了開閉原則所踊,增加了軟件的可維護(hù)性泌枪。

@Kingram

為什么要遵循開閉原則?
1秕岛、修改原有復(fù)雜的業(yè)務(wù)代碼本來(lái)就存在一定的風(fēng)險(xiǎn)碌燕,同時(shí)耗費(fèi)精力,可能影響到別的你不知道的地方继薛,導(dǎo)致程序運(yùn)行故障修壕。
2、修改代碼同時(shí)單元測(cè)試也要跟著修改惋增,浪費(fèi)時(shí)間精力叠殷。
3、可擴(kuò)展性差的代碼同時(shí)封裝性也會(huì)差诈皿,違背面向?qū)ο笤O(shè)計(jì)原則林束。
補(bǔ)充:但是注意不要過(guò)度設(shè)計(jì)呦

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末像棘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子壶冒,更是在濱河造成了極大的恐慌缕题,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胖腾,死亡現(xiàn)場(chǎng)離奇詭異烟零,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)咸作,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門锨阿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人记罚,你說(shuō)我怎么就攤上這事墅诡。” “怎么了桐智?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵末早,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我说庭,道長(zhǎng)然磷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任刊驴,我火速辦了婚禮姿搜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捆憎。我一直安慰自己痪欲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布攻礼。 她就那樣靜靜地躺著,像睡著了一般栗柒。 火紅的嫁衣襯著肌膚如雪礁扮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天瞬沦,我揣著相機(jī)與錄音太伊,去河邊找鬼。 笑死逛钻,一個(gè)胖子當(dāng)著我的面吹牛僚焦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播曙痘,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼芳悲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼立肘!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起名扛,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤谅年,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后肮韧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體融蹂,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年弄企,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了超燃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拘领,死狀恐怖意乓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情院究,我是刑警寧澤洽瞬,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站业汰,受9級(jí)特大地震影響伙窃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜样漆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一为障、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧放祟,春花似錦鳍怨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至眉撵,卻和暖如春侦香,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纽疟。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工罐韩, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人污朽。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓散吵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子矾睦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容