七大軟件設(shè)計(jì)原則

軟件設(shè)計(jì)原則是比較抽象的概念薪贫,在設(shè)計(jì)模式中經(jīng)常體現(xiàn)初設(shè)計(jì)原則的概念艘狭,但是設(shè)計(jì)模式中也會(huì)有取舍,可能部分體現(xiàn)了囚霸,也可能完整的體現(xiàn)。設(shè)計(jì)原則更應(yīng)該表現(xiàn)為原則問題激才,在進(jìn)行設(shè)計(jì)時(shí)基于設(shè)計(jì)原則能幫助設(shè)計(jì)出更好的軟件設(shè)計(jì)拓型。

開閉原則

定義:一個(gè)良好的軟件包括類额嘿、模塊、函數(shù)應(yīng)該對(duì)修改關(guān)閉劣挫,對(duì)擴(kuò)展開放册养。通過抽象的設(shè)計(jì),提高軟件代碼的復(fù)用性 压固。

體現(xiàn):基于接口的設(shè)計(jì)球拦,派生滿足修改的實(shí)現(xiàn)類,將修改通過具體的實(shí)現(xiàn)完成擴(kuò)展帐我。

依賴倒置原則

定義:高層模塊不應(yīng)該依賴底層模塊坎炼,抽象不應(yīng)該依賴細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴抽象拦键。面向接口編程而不應(yīng)該面向?qū)崿F(xiàn)編程谣光。用于減少代碼的耦合性,提高可維護(hù)性芬为,減少修改程序所帶來的風(fēng)險(xiǎn)萄金。

體現(xiàn):通過調(diào)用接口的方法,而不是具體的實(shí)現(xiàn)類來完成功能代碼媚朦。面向接口編程氧敢,而不是面向?qū)崿F(xiàn)編程。

單一職責(zé)原則

定義:類询张、函數(shù)孙乖、接口只應(yīng)負(fù)責(zé)一項(xiàng)職責(zé),理解為應(yīng)該僅有一個(gè)引起變化它的原因瑞侮。

體現(xiàn):做好功能的拆分的圆,減少耦合,實(shí)現(xiàn)職責(zé)隔離的代碼半火,

接口隔離原則

定義:接口的設(shè)計(jì)應(yīng)該細(xì)化越妈,實(shí)現(xiàn)根據(jù)需要來實(shí)現(xiàn)多個(gè)接口,通過小的接口實(shí)現(xiàn)接口間的隔離钮糖。提高代碼的可讀性梅掠、可維護(hù)性、可擴(kuò)展性店归。

體現(xiàn):約束接口的設(shè)計(jì)阎抒,高內(nèi)聚低耦合,只用需要的接口消痛,而不是一個(gè)膨大的接口且叁。

迪米特法則

定義:最少知道原則,類與類間的調(diào)用應(yīng)該只需要跟入?yún)⒅壬。鰠⒊汛蓡T變量做交互欺矫,而不需要對(duì)方法內(nèi)的變量做交互。降低了類之間的耦合度展氓,提高了模塊的相對(duì)獨(dú)立性穆趴。由于親合度降低,從而提高了類的可復(fù)用率和系統(tǒng)的擴(kuò)展性遇汞。

體現(xiàn):從依賴者的角度來說未妹,只依賴應(yīng)該依賴的對(duì)象。從被依賴者的角度說空入,只暴露應(yīng)該暴露的方法络它。

里氏替換原則

定義:繼承必須確保超類所擁有的性質(zhì)在子類中仍然成立。子類可以擴(kuò)展父類的功能执庐,但不能改變父類原有的功能

體現(xiàn):子類必須實(shí)現(xiàn)父類的抽象方法酪耕,但不得重寫(覆蓋)父類的非抽象方法。
子類中可以增加自己特有的方法轨淌。
當(dāng)子類覆蓋或?qū)崿F(xiàn)父類的方法時(shí)迂烁,方法的形參比父類方法的輸入?yún)?shù)更寬松。
當(dāng)子類的方法實(shí)現(xiàn)父類的抽象方法時(shí)递鹉,方法的返回值要比父類更嚴(yán)格盟步。

合成復(fù)用原則

定義:盡量使用對(duì)象的組合、聚合來達(dá)到軟件復(fù)用的目的躏结。即has-a却盘,contains-a的關(guān)系。

體現(xiàn):通過傳入創(chuàng)建依賴對(duì)象實(shí)現(xiàn)組合的具體對(duì)象媳拴,而不是繼承來實(shí)現(xiàn)具體的對(duì)象黄橘。

總結(jié)

軟件設(shè)計(jì)最終想要實(shí)現(xiàn)的目的都是完成代碼的解耦,實(shí)現(xiàn)高內(nèi)聚低耦合屈溉,可擴(kuò)展塞关、可復(fù)用的軟件。


拓展閱讀-設(shè)計(jì)模式

單例模式
工廠模式
建造者模式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末子巾,一起剝皮案震驚了整個(gè)濱河市帆赢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌线梗,老刑警劉巖椰于,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異仪搔,居然都是意外死亡瘾婿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來憋他,“玉大人孩饼,你說我怎么就攤上這事髓削≈竦玻” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵立膛,是天一觀的道長(zhǎng)揪罕。 經(jīng)常有香客問我,道長(zhǎng)宝泵,這世上最難降的妖魔是什么好啰? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮儿奶,結(jié)果婚禮上框往,老公的妹妹穿的比我還像新娘。我一直安慰自己闯捎,他們只是感情好椰弊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瓤鼻,像睡著了一般秉版。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上茬祷,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天清焕,我揣著相機(jī)與錄音,去河邊找鬼祭犯。 笑死秸妥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沃粗。 我是一名探鬼主播粥惧,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼陪每!你這毒婦竟也來了影晓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤檩禾,失蹤者是張志新(化名)和其女友劉穎挂签,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盼产,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡饵婆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了戏售。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侨核。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡草穆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出搓译,到底是詐尸還是另有隱情悲柱,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布些己,位于F島的核電站豌鸡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏段标。R本人自食惡果不足惜涯冠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望逼庞。 院中可真熱鬧蛇更,春花似錦、人聲如沸赛糟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虑灰。三九已至吨瞎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間穆咐,已是汗流浹背颤诀。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留对湃,地道東北人崖叫。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像拍柒,于是被迫代替她去往敵國(guó)和親心傀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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