設計模式初探(1)單一職責原則

如果你復用代碼的方式還是復制粘貼率碾,如果你維護的模塊正在變得臃腫和復雜,如果你的一次小改動會無意中引發(fā)無關模塊的bug撑刺,那么你需要好好學習下設計模式了鹉胖。

最近在學習中小有收獲,忍不住在這里賣弄一番够傍,同時也希望有前輩來指點一二甫菠。

談到設計模式,首先想到的肯定是S.O.L.I.D五個設計原則冕屯。

單一職責原則

我們可以把職責定義為“變化的原因”寂诱,單一職責就是一個類只有一個引起它變化的原因。

怎么判斷一組變化是一個原因愕撰?
我試著下一個定義好了:若對每個變化A的可能a刹衫,都有且只有一個變化B的可能b與之對應,當變化a發(fā)生時b總會發(fā)生搞挣,當變化b發(fā)生時a總會發(fā)生带迟。那么變化A和變化B是同一個變化原因。

舉個例子:

模塊1
模塊2
模塊3

模塊1囱桨,模塊2仓犬,模塊3的功能相似。
其中的變化有:

  • 頂部三角相對模塊的位置
  • 模塊相對熱區(qū)(“書架”按鈕舍肠,“ 歷史”按鈕)的位置搀继。
  • 列表項的內容(1,2為收藏,3為歷史)
  • 底部按鈕的文案(“全部收藏”翠语,“全部歷史”)

這里有幾個變化原因呢叽躯?

  • 三角的位置和模塊相對熱區(qū)的位置是一個變化原因点骑。當模塊與熱區(qū)左對齊時三角總是居左黑滴,當模塊與熱區(qū)居中對齊時三角總是居中袁辈,當模塊與熱區(qū)右對齊時三角總是居右晚缩。
  • 底部文案和列表項內容當內容為收藏相關數(shù)據(jù)時橡羞,文案總為“全部收藏”卿泽;當內容為歷史相關數(shù)據(jù)時签夭,文案總為“全部歷史”第租。
  • 沒有發(fā)生變化的部分
    根據(jù)單一職責原則慎宾,沒有發(fā)生變化的部分可以和任意一個變化原因放在一起趟据。但是考慮到?jīng)]有發(fā)生變化的部分在未來可能衍生出新的變化原因汹碱,所以建議將沒有發(fā)生變化的部分也放在一個單獨的模塊中咳促。

這樣跪腹,我們就把一個復雜的功能劃分成了3個簡單的模塊冲茸,為大腦減負(不用禿頂了~)噪裕。同時膳音,將功能劃分也是“開閉原則”的前置條件祭陷。

未完待續(xù)兵志,設計模式初探(2)開閉原則

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末悠栓,一起剝皮案震驚了整個濱河市惭适,隨后出現(xiàn)的幾起案子癞志,更是在濱河造成了極大的恐慌凄杯,老刑警劉巖屯碴,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酌摇,死亡現(xiàn)場離奇詭異仍稀,居然都是意外死亡技潘,警方通過查閱死者的電腦和手機享幽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門豪椿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咳秉,“玉大人,你說我怎么就攤上這事霎奢。” “怎么了晤硕?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵疏橄,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任损同,我火速辦了婚禮茂卦,結果婚禮上伶贰,老公的妹妹穿的比我還像新娘。我一直安慰自己黍衙,他們只是感情好泥畅,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著琅翻,像睡著了一般位仁。 火紅的嫁衣襯著肌膚如雪柑贞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天聂抢,我揣著相機與錄音钧嘶,去河邊找鬼。 笑死琳疏,一個胖子當著我的面吹牛有决,可吹牛的內容都是我干的。 我是一名探鬼主播空盼,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼书幕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了我注?” 一聲冷哼從身側響起按咒,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤迟隅,失蹤者是張志新(化名)和其女友劉穎但骨,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體智袭,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡奔缠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年吼野,在試婚紗的時候發(fā)現(xiàn)自己被綠了校哎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡瞳步,死狀恐怖闷哆,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情单起,我是刑警寧澤抱怔,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站嘀倒,受9級特大地震影響屈留,放射性物質發(fā)生泄漏。R本人自食惡果不足惜测蘑,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一灌危、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碳胳,春花似錦勇蝙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽藕帜。三九已至,卻和暖如春惜傲,著一層夾襖步出監(jiān)牢的瞬間洽故,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工盗誊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留时甚,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓哈踱,卻偏偏與公主長得像荒适,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子开镣,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,095評論 25 707
  • 感性的我卻很努力的用理性在消費刀诬,不為別的,只是生活那么美邪财,我不愿它回過頭去是凌亂的模樣陕壹。頂著烈日也出行,因為沒有其...
    華美人閱讀 260評論 1 1
  • 我稱這個叫心靈的路程树埠。人的一生大多是用腳走的糠馆,走的腿腳酸痛,心疲身乏怎憋。也有一些不被常人理解的路又碌,我今天就再次踏上...
    浮萍幾萬里閱讀 313評論 0 1
  • 正在吃晚飯時門鈴響了,打開門朋友春芽左手拎著行李箱右手牽著孩子绊袋,神色憔悴的出現(xiàn)在我視線中毕匀。 吃完飯...
    靈菇?jīng)?/span>閱讀 565評論 0 0
  • 這時,青蛙才發(fā)現(xiàn)井水變少了癌别。 他想:怎么辦皂岔,如果水少了我就跳不出去啦!他又想:沒關系规个,明天也許會下雨的…...
    皓皓_f9d7閱讀 302評論 0 1