設(shè)計(jì)模式雜記 - 基本概念

一 關(guān)系

依賴(Dependency)

依賴關(guān)系是類與類之間的聯(lián)接钙畔。依賴關(guān)系表示一個類依賴于另一個類的定義晃财。例如赌躺,一個人(Person)可以買車(car)和房子(House)扛伍,Person類依賴于Car類和House類的定義掂榔,因?yàn)镻erson類引用了Car和House探颈。與關(guān)聯(lián)不同的是熟丸,Person類里并沒有Car和House類型的屬性,Car和House的實(shí)例是以參量的方式傳入到buy()方法中去的伪节。一般而言光羞,依賴關(guān)系在Java語言中體現(xiàn)為局域變量、方法的形參怀大,或者對靜態(tài)方法的調(diào)用纱兑。

A ------------> B
A依賴于B,A類中有B類型的局部變量化借、方法型參或者其他潜慎,但是沒有B的成員變量或者屬性。

關(guān)聯(lián)(Association)

關(guān)聯(lián)關(guān)系是類與類之間的聯(lián)接蓖康,它使一個類知道另一個類的屬性和方法铐炫。關(guān)聯(lián)可以是雙向的,也可以是單向的蒜焊。關(guān)聯(lián)關(guān)系一般使用成員變量來實(shí)現(xiàn)倒信。

A -——————> B
A單項(xiàng)關(guān)聯(lián)B,A類中有一個B的成員變量或者屬性泳梆。

聚合(Aggregation)

聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種鳖悠,是強(qiáng)的關(guān)聯(lián)關(guān)系。聚合是整體和個體之間的關(guān)系优妙。例如乘综,汽車類與引擎類、輪胎類鳞溉,以及其它的零件類之間的關(guān)系便整體和個體的關(guān)系瘾带。與關(guān)聯(lián)關(guān)系一樣,聚合關(guān)系也是通過實(shí)例變量實(shí)現(xiàn)的熟菲。但是關(guān)聯(lián)關(guān)系所涉及的兩個類是處在同一層次上的看政,而在聚合關(guān)系中,兩個類是處在不平等層次上的抄罕,一個代表整體允蚣,另一個代表部分。

汽車 ◇—————— > 引擎

組合(Composition)

組合關(guān)系是關(guān)聯(lián)關(guān)系的一種呆贿,是比聚合關(guān)系強(qiáng)的關(guān)系嚷兔。它要求普通的聚合關(guān)系中代表整體的對象負(fù)責(zé)代表部分對象的生命周期森渐,組合關(guān)系是不能共享的。代表整體的對象需要負(fù)責(zé)保持部分對象和存活冒晰,在一些情況下將負(fù)責(zé)代表部分的對象湮滅掉同衣。代表整體的對象可以將代表部分的對象傳遞給另一個對象,由后者負(fù)責(zé)此對象的生命周期壶运。換言之耐齐,代表部分的對象在每一個時(shí)刻只能與一個對象發(fā)生組合關(guān)系,由后者排他地負(fù)責(zé)生命周期蒋情。部分和整體的生命周期一樣埠况。

公司 ◆——————————> 部門

*注

在代碼層面關(guān)聯(lián)、聚合棵癣、組合是一樣的辕翰,但是語義上會有差別。

二 原則

  1. 開閉原則 (Open Closed Principle, OCP)
    對模塊 擴(kuò)展開放, 對修改關(guān)閉狈谊。 .m里面的實(shí)現(xiàn)代碼不改變(通過擴(kuò)展子類來擴(kuò)喜命,修改或者擴(kuò)展功能)
    該原則是一個最理想狀態(tài)。

  2. 里氏代換原則 (Liskov Substitution Principle , LSP)
    任何類可以出現(xiàn)的地方, 子類一定可以出現(xiàn), 子類跟父類可以相互替換,子類可以用父類所有的方法的畴。該原則和接口隔離原則互斥渊抄。
    和多肽的區(qū)別:多肽是重寫父類的方法,而里氏替換原則則不能重現(xiàn)父類方法丧裁。

  3. 依賴倒轉(zhuǎn)原則 (Dependency Inversion Principle, DIP)
    抽象(接口)不依賴于細(xì)節(jié)(具體實(shí)現(xiàn)),細(xì)節(jié)依賴于抽象护桦。(一般指的是接口)
    再說白點(diǎn),就是多用類似于 id<協(xié)議> 這種形式煎娇,而設(shè)計(jì)的時(shí)候也是要以這種形式而去設(shè)計(jì)二庵。

  4. 接口隔離原則 (Interface Segregation Principle, ISP)
    接口里面只做必要的事情 不做其他相關(guān)的事情。該原則和里氏代換原則互斥缓呛。

  5. 合成/聚合復(fù)用原則 (Composite/ Aggregate Reuse Principle, CARP)
    需要從一個類擴(kuò)展出另外一種方法,盡量不要使用繼承(而是用聚合來擴(kuò)展),使用新的方法催享。

  6. 最小知識原則 (Principle of Least Knowledge, PLK)
    兩個類沒有彼此直接通信. 而是使用另一個類來通信。

  7. 單一職責(zé)原則 (Single responsibility principle, SRP)
    一個類只負(fù)責(zé)一個功能領(lǐng)域哟绊。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末因妙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子票髓,更是在濱河造成了極大的恐慌攀涵,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洽沟,死亡現(xiàn)場離奇詭異以故,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)裆操,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門怒详,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炉媒,“玉大人,你說我怎么就攤上這事昆烁〉踔瑁” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵善玫,是天一觀的道長水援。 經(jīng)常有香客問我,道長茅郎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任或渤,我火速辦了婚禮系冗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘薪鹦。我一直安慰自己掌敬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布池磁。 她就那樣靜靜地躺著奔害,像睡著了一般。 火紅的嫁衣襯著肌膚如雪地熄。 梳的紋絲不亂的頭發(fā)上华临,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天,我揣著相機(jī)與錄音端考,去河邊找鬼雅潭。 笑死,一個胖子當(dāng)著我的面吹牛却特,可吹牛的內(nèi)容都是我干的扶供。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼裂明,長吁一口氣:“原來是場噩夢啊……” “哼椿浓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起闽晦,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤扳碍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后尼荆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體左腔,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年捅儒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了液样。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片振亮。...
    茶點(diǎn)故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鞭莽,靈堂內(nèi)的尸體忽然破棺而出坊秸,到底是詐尸還是另有隱情,我是刑警寧澤澎怒,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布褒搔,位于F島的核電站,受9級特大地震影響喷面,放射性物質(zhì)發(fā)生泄漏星瘾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一惧辈、第九天 我趴在偏房一處隱蔽的房頂上張望琳状。 院中可真熱鬧,春花似錦盒齿、人聲如沸念逞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翎承。三九已至,卻和暖如春符匾,著一層夾襖步出監(jiān)牢的瞬間叨咖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工待讳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芒澜,地道東北人。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓创淡,卻偏偏與公主長得像痴晦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子琳彩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評論 2 345

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