設(shè)計模式-單一職責(zé)原則

設(shè)計模式-單一職責(zé)原則
單一職責(zé)原則使用的是創(chuàng)建型模式

創(chuàng)建型模式

創(chuàng)建型模式對類進行抽象

重點,創(chuàng)建型模式能夠?qū)ο蟮膭?chuàng)建和和對象的使用分離碟狞。即使用創(chuàng)建型模式能夠使得對象的創(chuàng)建潦闲,對象的使用分離挤悉。重點在于分離泣刹。

什么是單一的職責(zé)原則

設(shè)計模式有六大基本原則辈讶,單一職責(zé)原則命浴,里氏替換原則,依賴倒置原則,接口隔離原則生闲,迪米特法則媳溺,開閉原則。
其中創(chuàng)建型模式符合單一職責(zé)原則碍讯。

單一職責(zé)原則

即SRP 用戶角色管理等模塊悬蔽,使用的是RBAC模型

RBAC 一種以角色為儲存的控制,使用RBAC 不賦予權(quán)限捉兴,賦予角色蝎困,例如windows的用戶管理,使用的是賦予角色倍啥,對用戶進行管理禾乘,這種方式為RBAC,目的在于使得用戶和權(quán)限分離逗栽。

設(shè)計一個用戶管理盖袭,依據(jù)單一職責(zé)模型,設(shè)計以下的結(jié)構(gòu)彼宠。


image

該結(jié)構(gòu)定義一些管理用戶的鳄虱,增加用戶的一些內(nèi)容,寫入一個接口中凭峡,然后進行實現(xiàn)拙已。

該接口具有以上的問題。
用戶的屬性(是否為注冊用戶摧冀,vip用戶等等)倍踪,用戶的行為(增加用戶,刪除用戶)沒有分開索昂。
該接口一團糟建车!
應(yīng)該用戶的信息,用戶的行為抽取為一個接口椒惨,然后一個接口繼承這兩個接口
更改的如下所示


image

why? 為什么要分離缤至,因為單一職責(zé)原則,當(dāng)使用單一職責(zé)原則的時候康谆,每個接口领斥,每個類需要承擔(dān)單一的職責(zé),不應(yīng)該承擔(dān)過多的原則沃暗,易于維護

核心 月洛,一個接口只有一個原則!一個接口只能負責(zé)一件事情孽锥,只有一個原因能引起其變化

實現(xiàn)一個電話的接口

image

這個接口包含兩個職責(zé)嚼黔,協(xié)議管理和數(shù)據(jù)傳送细层。
dial和chat為通話,該通話和撥打電話唬涧,使用了同時都和協(xié)議有關(guān)系今艺,如果要更改協(xié)議,那么這兩個接口的內(nèi)容都需要進行更改爵卒。由于一個接口存在兩個職責(zé),所以該接口需要劃分為兩個接口

此時存在一個關(guān)聯(lián)關(guān)系撵彻,撥打電話和協(xié)議的實現(xiàn)钓株,兩者之間存在關(guān)聯(lián)關(guān)系,此關(guān)聯(lián)關(guān)系為靜態(tài)關(guān)聯(lián)

image

這個類圖完全符合單一職責(zé)的原則陌僵。每個狀態(tài)只決定一件事情轴合。每個狀態(tài)的更改只改變一件事情。

好處 復(fù)雜度降低 可讀性提高 可維護性增強 變更引起的風(fēng)險降低(因為變更的時候如果每個接口只負責(zé)一個單一的原則碗短,那么一個接口的修改對其他沒有影響受葛,這樣降低了整體的復(fù)雜度)

單一原則適用于方法

刀就是刀,叉就是叉偎谁,1就是1,0就是0.沒有中間態(tài)总滩,每個方法也同樣的適用于單一原則,每個方法也同樣的只承擔(dān)一個內(nèi)容巡雨。一個作用闰渔。

總結(jié)

This is sometimes hard to see
這個有時候很難說!
對接口盡量做到單一原則铐望,類的做到引起一個原因引起的變化冈涧。

www.iming.info

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市正蛙,隨后出現(xiàn)的幾起案子督弓,更是在濱河造成了極大的恐慌,老刑警劉巖乒验,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件愚隧,死亡現(xiàn)場離奇詭異,居然都是意外死亡徊件,警方通過查閱死者的電腦和手機奸攻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來虱痕,“玉大人睹耐,你說我怎么就攤上這事〔壳蹋” “怎么了硝训?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我窖梁,道長赘风,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任纵刘,我火速辦了婚禮邀窃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘假哎。我一直安慰自己瞬捕,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布舵抹。 她就那樣靜靜地躺著肪虎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惧蛹。 梳的紋絲不亂的頭發(fā)上扇救,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機與錄音香嗓,去河邊找鬼迅腔。 笑死,一個胖子當(dāng)著我的面吹牛陶缺,可吹牛的內(nèi)容都是我干的钾挟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼饱岸,長吁一口氣:“原來是場噩夢啊……” “哼掺出!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起苫费,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤汤锨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后百框,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闲礼,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年铐维,在試婚紗的時候發(fā)現(xiàn)自己被綠了柬泽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡嫁蛇,死狀恐怖锨并,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情睬棚,我是刑警寧澤第煮,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布解幼,位于F島的核電站,受9級特大地震影響包警,放射性物質(zhì)發(fā)生泄漏撵摆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一害晦、第九天 我趴在偏房一處隱蔽的房頂上張望特铝。 院中可真熱鬧,春花似錦壹瘟、人聲如沸苟呐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至严衬,卻和暖如春澄者,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背请琳。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工粱挡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俄精。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓询筏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親竖慧。 傳聞我的和親對象是個殘疾皇子嫌套,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

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