設(shè)計模式六大原則

設(shè)計模式的作用


概述

編寫軟件過程中,程序員面臨著來自 **耦合性**换棚、**內(nèi)聚性**以及**可維護性**没炒,**可擴展性**涛癌,**重用性**,**靈活性**等多方面的挑戰(zhàn)送火,設(shè)計模式就是讓為了解決這些問題而提出的
  • 代碼重用性 相同功能的代碼拳话,不用多次編寫

  • 可讀性 編程規(guī)范性,便于其他人閱讀跟理解

  • 可擴展性 當(dāng)需要添加新功能是非常方便

  • 可靠性 當(dāng)添加新功能后 對原來的功能沒有影響

七大原則

  • 單一職責(zé)原則
  • 接口隔離原則
  • 依賴倒轉(zhuǎn)原則
  • 里氏替換原則
  • 開閉原則
  • 迪米特法則
  • 合成復(fù)用原則

1种吸、單一職責(zé)原則

就是一個類應(yīng)該只負責(zé)一項(一類)職責(zé)弃衍,例如Dao文件,一個Dao類只負責(zé)一個數(shù)據(jù)表的增刪改查坚俗,不能負責(zé)多個表或者說多類表

2镜盯、接口隔離原則

客戶端不應(yīng)該依賴它不需要的接口,即一個類對另一個類的依賴應(yīng)該建立在最小的接口上坦冠,只實現(xiàn)自己需要的接口

3形耗、依賴倒轉(zhuǎn)原則

  • 高層模塊不應(yīng)該依賴低層模塊哥桥,二者都應(yīng)該依賴其抽象 模塊與模塊之間應(yīng)該使用接口進行依賴連接辙浑、
  • 抽象不應(yīng)該依賴細節(jié),細節(jié)應(yīng)該依賴抽象
  • 依賴倒轉(zhuǎn)的中心思想是面向接口編程
  • 依賴倒轉(zhuǎn)原則是基于這樣的設(shè)計理念:相對于細節(jié)的多邊形拟糕,抽象的東西要穩(wěn)定的多判呕,以抽象為基礎(chǔ)搭建的架構(gòu)比以細節(jié)為基礎(chǔ)的架構(gòu)要穩(wěn)定的多,在java中送滞,抽象是指接口或抽象類侠草,細節(jié)就是具體的實現(xiàn)類。
  • 使用接口或者抽象類的目的是定制好規(guī)范犁嗅,而不設(shè)計任何具體的操作边涕,把戰(zhàn)線細節(jié)的任務(wù)交給他們的實現(xiàn)類去完成
// 依賴關(guān)系的三種傳遞方式
interface A {
    void info1();
}

interface B {
    void info2();
}

interface C {
    void info3();
}


class Denpendency {
    private A a;
    private B b;
    public Denpendency(A a) {
        this.a = a;
    }
  
    public void setB(B b) {
        this.b = b;
    }
    
    public void showC (C c) {
        c.info3();
    }
}



4、里氏替換原則

**關(guān)于繼承的問題** 
  • 繼承包含這樣一層含義:父類中凡是已經(jīng)實現(xiàn)好的方法,實際上是在設(shè)定規(guī)范和契約功蜓,雖然它不強制要求所有的子類必須遵循這些契約园爷,但是如果子類對這些已經(jīng)實現(xiàn)的方法進行任何修改,就會對整個繼承體系造成破壞式撼。
  • 繼承在給程序設(shè)計帶來便利的同時童社,也帶來了弊端,比如使用繼承會給程序來帶侵入性著隆,程序的可移植性降低扰楼,增加對象間的耦合性,如果一個類被其他的類鎖繼承美浦,則當(dāng)這個類需要修改時弦赖,必須考慮到所有的子類,并且父類修改后浦辨,所有涉及到的子類功能都有可能產(chǎn)生故障
  • 問題提出:在編程中腾节,如何正確的使用繼承? => 里是替換原則

里氏替換原則基本介紹

  • 如果對每個類型為T1的對象o1荤牍,都有類型為T2的對象o2案腺,使得以T1定義的所有程序P在所有的對象o1都代換成o2時,程序P的行為沒有發(fā)生變化康吵,那么類型T2是類型T1的子類型劈榨。換句話說,所有引用基類的地方都能透明的使用其子類的對象
  • 在使用繼承時晦嵌,遵循里氏替換原則在子類中盡量不要重寫父類的方法同辣。
  • 立體替換原則告訴我們,繼承實際上讓兩個類耦合性增強了惭载,在適當(dāng)?shù)那闆r下旱函,可以通過聚合,組合描滔,依賴來解決問題棒妨。

5、開閉原則

  • 開閉原則是編程中最基礎(chǔ)含长、最重要的設(shè)計原則
  • 一個軟件實體如類券腔,模塊和函數(shù)應(yīng)該對擴展開放,對修改關(guān)閉拘泞。用抽象構(gòu)造框架纷纫,用實現(xiàn)擴展細節(jié)。
  • 當(dāng)軟件需要變化時陪腌,盡量通過擴展軟件實體的行為來實現(xiàn)變化辱魁,而不是通過修改以后有的代碼來實現(xiàn)變化
  • 編程中遵循其他原則烟瞧,以及使用設(shè)計模式的的目的就是遵循開閉原則

6、迪米特法則

基本介紹

  • 一個對象應(yīng)該對其他對象保持最少的了解
  • 類與類關(guān)系越密切染簇,耦合度越大
  • 迪米特法則又叫最少知道原則燕刻,即一個類對自己依賴的類知道的越少越好。也就是說對于被依賴的類不管多么負責(zé)剖笙,都盡量將邏輯封裝在類的內(nèi)部卵洗,對外除了提供的public方法,不對外泄露任何信息弥咪。
  • 迪米特法則還有更簡單的定義:只與直接的朋友通信
  • 直接的朋友:每個對象都會與其他對象有耦合關(guān)系过蹂,只要兩個對象之間有耦合關(guān)系,我們就說這兩個對象之間是朋友關(guān)系聚至。耦合的方式很多酷勺,依賴,關(guān)聯(lián)扳躬,組合脆诉,聚合等。其中我們稱出現(xiàn)成員變量贷币,方法參數(shù)击胜,方法返回值中的類為直接的朋友,而出現(xiàn)在局部變量中的類不是直接的朋友役纹。也就是說偶摔,陌生的類最好不要以局部變量的方式出現(xiàn)在類的內(nèi)部;

7促脉、合成復(fù)用原則

基本介紹

盡量使用組合辰斋、聚合的方式,而不是使用繼承

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瘸味,一起剝皮案震驚了整個濱河市宫仗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌旁仿,老刑警劉巖藕夫,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丁逝,居然都是意外死亡汁胆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門霜幼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人誉尖,你說我怎么就攤上這事罪既。” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵琢感,是天一觀的道長丢间。 經(jīng)常有香客問我,道長驹针,這世上最難降的妖魔是什么烘挫? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮柬甥,結(jié)果婚禮上饮六,老公的妹妹穿的比我還像新娘。我一直安慰自己苛蒲,他們只是感情好卤橄,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著臂外,像睡著了一般窟扑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上漏健,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天嚎货,我揣著相機與錄音,去河邊找鬼蔫浆。 笑死厂抖,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的克懊。 我是一名探鬼主播忱辅,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谭溉!你這毒婦竟也來了墙懂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤扮念,失蹤者是張志新(化名)和其女友劉穎损搬,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柜与,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡巧勤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了弄匕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颅悉。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖迁匠,靈堂內(nèi)的尸體忽然破棺而出剩瓶,到底是詐尸還是另有隱情驹溃,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布延曙,位于F島的核電站豌鹤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏枝缔。R本人自食惡果不足惜布疙,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望愿卸。 院中可真熱鬧灵临,春花似錦、人聲如沸擦酌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赊舶。三九已至睁搭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間笼平,已是汗流浹背园骆。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留寓调,地道東北人锌唾。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像夺英,于是被迫代替她去往敵國和親晌涕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345