設計模式總結

一陋葡、面向對象的設計六大原則

  1. 單一職責原則(Single Responsibility Principle, SRP):一個類只負責一個功能領域中的相應職責,或者可以定義為:就一個類而言种蝶,應該只有一個引起它變化的原因。單一職責原則是最簡單的面向對象設計原則,它用于控制類的粒度大小锣尉。

個人思考:簡單的說攀隔,一個類的功能盡可能簡單皂贩,多個類實現(xiàn)復雜功能。編寫代碼時昆汹,根據(jù)職責多分幾個類實現(xiàn)復雜功能明刷。

  1. 開閉原則(Open-Closed Principle, OCP):一個軟件實體應當對擴展開放,對修改關閉满粗。即軟件實體應盡量在不修改原有代碼的情況下進行擴展辈末。 開閉原則是面向對象的可復用設計的第一塊基石映皆,它是最重要的面向對象設計原則

個人思考:防止需求的變化導致代碼修改挤聘。抽象化,就是開閉原則的關鍵

  1. 里氏代換原則(Liskov Substitution Principle, LSP):所有引用基類(父類)的地方必須能透明地使用其子類的對象捅彻。里氏代換原則是實現(xiàn)開閉原則的重要方式之一

個人思考:老爹對象能干的活组去,兒子繼承都能干,但是兒子能干的活步淹,老爹干不了添怔。編碼時,將父類設計為抽象類或者接口贤旷,子類實現(xiàn)具體方法广料,這樣擴展功能時,就只需要增加子類幼驶,而無需修改舊代碼艾杏。

  1. 依賴倒轉原則(Dependency Inversion Principle, DIP):抽象不應該依賴于細節(jié),細節(jié)應當依賴于抽象盅藻。換言之购桑,要針對接口編程畅铭,而不是針對實現(xiàn)編程。依賴倒轉原則就是面向對象設計的主要實現(xiàn)機制之一

在引入抽象層后勃蜘,系統(tǒng)將具有很好的靈活性硕噩,在程序中盡量使用抽象層進行編程,而將具體類寫在配置文件中缭贡,這樣一來炉擅,如果系統(tǒng)行為發(fā)生變化,只需要對抽象層進行擴展阳惹,并修改配置文件谍失,而無須修改原有系統(tǒng)的源代碼,在不修改的情況下來擴展系統(tǒng)的功能莹汤,滿足開閉原則的要求快鱼。某實現(xiàn)案例如下:


image.png

個人思考: 開閉原則,里氏代換原則纲岭,依賴倒置原則往往是同時出現(xiàn)的抹竹。注意四個概念:依賴注入,以及依賴注入的三種方式:構造注入止潮,設值注入(Setter注入)和接口注入窃判。常見:根據(jù)配置文件,實現(xiàn)某個功能沽翔。如截圖案例所示

  1. 接口隔離原則(Interface Segregation Principle, ISP):使用多個專門的接口兢孝,而不使用單一的總接口窿凤,即客戶端不應該依賴那些它不需要的接口仅偎。

個人思考:類似單一職責原則,不要太大的接口雳殊,接口方法不可過多橘沥。

  1. 迪米特法則(Law of Demeter, LoD):一個軟件實體應當盡可能少地與其他實體發(fā)生相互作用。

個人思考:就是修改一個類的時候夯秃,盡量少影響其他類座咆。思考多個類互相影響的場景:
如下圖實例中,可以通過引入一個專門用于控制界面控件交互的中間類(Mediator)來降低界面控件之間的耦合度仓洼。引入中間類之后介陶,界面控件之間不再發(fā)生直接引用,而是將請求先轉發(fā)給中間類色建,再由中間類來完成對其他控件的調(diào)用哺呜。當需要增加或刪除新的控件時,只需修改中間類即可箕戳,無須修改新增控件或已有控件的源代碼:

image.png

參考資料:
設計模式六大原則

二某残、設計模式分類

設計模式分為三大類
創(chuàng)建型(5種):單例国撵,工廠,抽象工廠玻墅,建造者模式介牙,原型模式
結構型(7種):外觀,組合澳厢,享元环础,代理,適配器赏酥,裝飾器喳整,橋接
行為型(11種):策略模式、模板方法模式裸扶、觀察者模式框都、迭代子模式、責任鏈模式呵晨、命令模式魏保、備忘錄模式、狀態(tài)模式摸屠、訪問者模式谓罗、中介者模式、解釋器模式

image.png

三季二、設計模式分類總結

寫代碼:可復用檩咱,少修改,易擴展
創(chuàng)建型模式:為了解決對象的創(chuàng)建問題胯舷。

結構型模式:關注對象間的組合刻蚯,關心實體之間是如何互相使用的。

個人思考:具體而言桑嘶,就是如何設計類和類之間的依賴關系炊汹,以更為合適的方式,實現(xiàn)類的對象方法對另一個類實例對象的調(diào)用逃顶。比如讨便,門面模式,就是增加一個接口類以政,匯總子系統(tǒng)的接口霸褒,方便客戶端調(diào)用。適配器盈蛮,改變接口方法废菱,以便擴展應用,讓實現(xiàn)另一種接口的客戶端調(diào)用。裝飾器模式昙啄,增強接口方法等等穆役。
簡而言之,如何更好的使用另一個類梳凛。

行為型模式:對類或對象怎樣交互和怎樣分配職責進行描述耿币。個人理解,所謂分配職責韧拒,可以理解為完成一項工作淹接,或是某個業(yè)務需求,劃分職責分配到類中實現(xiàn)叛溢,這職責的分配模式塑悼,就是行為型的概念

四、設計模式參考

23種設計模式
菜鳥教程設計模式

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末楷掉,一起剝皮案震驚了整個濱河市厢蒜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌烹植,老刑警劉巖斑鸦,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異草雕,居然都是意外死亡巷屿,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進店門墩虹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嘱巾,“玉大人,你說我怎么就攤上這事诫钓⊙眩” “怎么了?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵尖坤,是天一觀的道長稳懒。 經(jīng)常有香客問我闲擦,道長慢味,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任墅冷,我火速辦了婚禮纯路,結果婚禮上,老公的妹妹穿的比我還像新娘寞忿。我一直安慰自己驰唬,他們只是感情好,可當我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著叫编,像睡著了一般辖佣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上搓逾,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天卷谈,我揣著相機與錄音,去河邊找鬼霞篡。 笑死世蔗,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的朗兵。 我是一名探鬼主播污淋,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼余掖!你這毒婦竟也來了寸爆?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤盐欺,失蹤者是張志新(化名)和其女友劉穎而昨,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體找田,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡歌憨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了墩衙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片潮饱。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡姥饰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情慷垮,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布或悲,位于F島的核電站风喇,受9級特大地震影響,放射性物質發(fā)生泄漏樊破。R本人自食惡果不足惜愉棱,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望哲戚。 院中可真熱鬧奔滑,春花似錦、人聲如沸顺少。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至梅猿,卻和暖如春氓辣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背袱蚓。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工筛婉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人癞松。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓爽撒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親响蓉。 傳聞我的和親對象是個殘疾皇子硕勿,可洞房花燭夜當晚...
    茶點故事閱讀 45,747評論 2 361

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