Android 設(shè)計(jì)模式-面向?qū)ο罅笤瓌t

前言

  • 先說下一下為什么決定來寫關(guān)于設(shè)計(jì)模式的文章柔滔,本人也是從事開發(fā)很多年了共螺,很多人肯定都曾有過這樣的想法橱鹏,就是把設(shè)計(jì)模式背下來漏峰,到時(shí)候項(xiàng)目用到的時(shí)候就套用下糠悼,往往用到的時(shí)候早就忘了怎么寫了,或許只是簡單記住幾個寫法浅乔,現(xiàn)在看來這并不是真正的理解倔喂,套用不等于理解,真正理解之后會在思維里面形成一種模型靖苇,在做架構(gòu)設(shè)計(jì)席噩、封裝代碼時(shí)候會自然的把場景帶入,去理解每一種模式的場景顾复、優(yōu)點(diǎn)班挖、缺點(diǎn),才能更好的運(yùn)用芯砸。
  • 設(shè)計(jì)模式是一套被反復(fù)使用萧芙、多數(shù)人知曉的、經(jīng)過分類編目的假丧、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)双揪。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解包帚、保證代碼可靠性渔期。

1.單一職責(zé)原則(SRP)

簡單的說就是:一個類中應(yīng)該是一組相關(guān)性很高的函數(shù)、數(shù)據(jù)的封裝。兩個不一樣的功能不應(yīng)該放在一個類中疯趟。

這個原則沒有具體的劃分界限拘哨,需要根據(jù)個人經(jīng)驗(yàn),具體業(yè)務(wù)邏輯而定信峻。這也是優(yōu)化代碼的第一步倦青。試想一下,如果所有的功能寫在一個類里盹舞,那么這個類會越來越大产镐,越來越復(fù)雜,越不易修改維護(hù)踢步。那么根據(jù)功能癣亚,各自獨(dú)立拆分出來,豈不是邏輯會清晰些获印。

2.開閉原則(OCP)

定義:軟件中的對象(類述雾、模塊、函數(shù)等)應(yīng)該對于擴(kuò)展是開放的蓬豁,但是對于修改是封閉的绰咽。

當(dāng)軟件需要變化時(shí),我們應(yīng)該盡量通過擴(kuò)展的方式實(shí)現(xiàn)變化地粪,而不是通過修改原有的代碼來實(shí)現(xiàn)取募。因?yàn)橹苯拥男薷模赡軙绊懸延械恼4a蟆技。不利于出現(xiàn)錯誤時(shí)排除問題玩敏。當(dāng)然實(shí)際開發(fā)中,修改原有代碼與擴(kuò)展代碼是同時(shí)存在的质礼。但應(yīng)盡量以擴(kuò)展為主旺聚。

3.里氏替換原則(LSP)

定義:所有引用父類的地方,必須能使用子類的對象眶蕉。簡單地說就是將父類替換為他的子類是不會出現(xiàn)問題砰粹,反之,未必可以造挽。
那么里氏替換原則就是依賴于面向?qū)ο笳Z言的繼承多態(tài)碱璃。核心原理是抽象

這里列舉一下繼承的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
(1)代碼重用饭入,減少創(chuàng)建類的成本嵌器,每個子類都擁有父類的方法與屬性。
(2)子類與父類基本相似谐丢,但與父類又有所區(qū)別爽航。
(3)提高代碼的可擴(kuò)展性蚓让。
缺點(diǎn):
(1)繼承是侵入性的,只要繼承就必須擁有父類所有的屬性與方法讥珍。
(2)可能造成子類代碼冗余历极、靈活性降低。

開閉原則和里氏替換原則是生死相依的串述、不離不棄的执解。他們都強(qiáng)調(diào)了抽象這一重要的特性寞肖。

4.依賴倒置原則(DIP)

定義:指代一種特定的解耦方式纲酗,使得高層次的模塊不依賴于低層次的模塊的實(shí)現(xiàn)細(xì)節(jié)的目的。他有一下幾個關(guān)鍵點(diǎn):
(1)高層模塊不依賴于低層模塊新蟆,應(yīng)該都依賴其抽象觅赊。
(2)抽象不依賴細(xì)節(jié)。
(3)細(xì)節(jié)應(yīng)依賴抽象琼稻。

解釋:在Java中吮螺,抽象就是指接口或者抽象類,兩者都是不能直接被實(shí)例化的帕翻;細(xì)節(jié)就是實(shí)現(xiàn)類鸠补,實(shí)現(xiàn)接口或者繼承抽象類而產(chǎn)生的就是細(xì)節(jié),也就是可以加上一個關(guān)鍵字new產(chǎn)生的對象嘀掸。高層模塊就是調(diào)用端紫岩,底層模塊就是具體實(shí)現(xiàn)類。

依賴倒置原則在Java中的表現(xiàn)就是:模塊間通過抽象發(fā)生睬塌,實(shí)現(xiàn)類之間不發(fā)生直接依賴關(guān)系泉蝌,其依賴關(guān)系是通過接口或者抽象類產(chǎn)生的。如果類與類直接依賴細(xì)節(jié)揩晴,那么就會直接耦合勋陪,那么當(dāng)修改時(shí),就會同時(shí)修改依賴者代碼硫兰,這樣限制了可擴(kuò)展性诅愚。

5.接口隔離原則(ISP)

定義:類間的依賴關(guān)系應(yīng)該建立在最小的接口上,將龐大劫映、臃腫的接口拆分成更小的违孝、更具體的接口。目的是系統(tǒng)的解耦苏研,從而更容易重構(gòu)等浊、更改和重新部署。

6.迪米特原則(LOD)

定義:一個類應(yīng)該對自己需要耦合或者調(diào)用的類知道的最少摹蘑,類的內(nèi)部如何實(shí)現(xiàn)與調(diào)用者或者依賴者沒有關(guān)系筹燕,調(diào)用者或依賴者只需知道他需要的方法,其他可以一概不管。這樣使得系統(tǒng)具有更低的耦合與更好的可擴(kuò)展性撒踪。

這六個原則过咬,可以使我們在應(yīng)用的后續(xù)升級、維護(hù)中更加方便制妄、輕松應(yīng)對掸绞。讓我們的軟件更加靈活。

總結(jié)

在我看來設(shè)計(jì)模式就像軍人手中的武器耕捞,只有足夠鋒利才能所向披靡衔掸,光看書看文章是不夠的,要自己在項(xiàng)目里真正的場景去使用才能更好的理解俺抽,包括在工程師成長的道路中敞映,無論作為高級開發(fā)還是架構(gòu)師都是需要對這些要理解銘記于心,才能寫出更好用的代碼磷斧,更穩(wěn)定擴(kuò)展性更強(qiáng)的架構(gòu)振愿,才能做到心中有劍,落葉飛花皆是兵器的境界弛饭。


點(diǎn)贊加關(guān)注是給我最大的鼓勵!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末冕末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子侣颂,更是在濱河造成了極大的恐慌档桃,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件横蜒,死亡現(xiàn)場離奇詭異胳蛮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)丛晌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門仅炊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人澎蛛,你說我怎么就攤上這事抚垄。” “怎么了谋逻?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵呆馁,是天一觀的道長。 經(jīng)常有香客問我毁兆,道長浙滤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任气堕,我火速辦了婚禮纺腊,結(jié)果婚禮上畔咧,老公的妹妹穿的比我還像新娘。我一直安慰自己揖膜,他們只是感情好誓沸,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著壹粟,像睡著了一般拜隧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上趁仙,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天洪添,我揣著相機(jī)與錄音,去河邊找鬼幸撕。 笑死薇组,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的坐儿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼宋光,長吁一口氣:“原來是場噩夢啊……” “哼貌矿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起罪佳,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤逛漫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后赘艳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酌毡,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年蕾管,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了枷踏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡掰曾,死狀恐怖旭蠕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旷坦,我是刑警寧澤掏熬,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站秒梅,受9級特大地震影響旗芬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捆蜀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一疮丛、第九天 我趴在偏房一處隱蔽的房頂上張望辆琅。 院中可真熱鬧,春花似錦这刷、人聲如沸婉烟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽似袁。三九已至,卻和暖如春咐刨,著一層夾襖步出監(jiān)牢的瞬間昙衅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工定鸟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留而涉,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓联予,卻偏偏與公主長得像啼县,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子沸久,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

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