[5] —— 委托模式 - 一個管理人員的一天

委托模式:委托模式軟件設計模式中的一項基本技巧摩渺。
在委托模式中,有兩個對象參與處理同一個請求错蝴,接受請求的對象將請求委托給另一個對象來處理洲愤。

舉個例子,一個公司有普通員工顷锰、財務人員柬赐、管理者三個角色,管理者可以調用普通員工進行某項工作官紫,可以派財務人員給某個員工開支躺率÷杲纾可以看出其中管理者并不會進行某項具體的工作,而是由各個人員來完成各自的工作悼吱。

UML

我們可以指派管理者去做某項工作慎框,或是給某個員工開支,這些具體工作由管理者委托給具體的某個實例來完成后添,這就是委托模式笨枯。

在 Kotlin 中實現(xiàn)委托十分方便,我們需要用到一個新的關鍵字 by遇西,接口以及 User 馅精、Accountant 類沒什么可談的 我們直接來看看代碼吧:

open  class User(var name: String="", var age:Int = 0):Work{
    var nickname:String = ""

    override fun doSomething() {
        println("$name do something")
    }

    override fun callSomebody(guest: String) {
        println("$name call $guest")
    }
}

class Accountant(name:String, age:Int) : User(name, age), Finance {
    override fun pay(maney: Int, user: User) {
        println("$name pay $maney to ${user.name}")
    }
}

class Manager(user: Work, accountant: Finance) : Work by user  ,Finance by accountant{
}

是的,就是這么簡單的實現(xiàn)了委托模式粱檀,我們通過 by 關鍵字洲敢,將本該由 Manager 類實現(xiàn)的兩個接口交由各個接口的具體實現(xiàn)類來完成。在 Kotlin 中使用 by 關鍵字完成委托還需要注意一點茄蚯,即只有接口可以被 by 委托給某個對象压彭。

image

你可能會疑惑為什么要使用委托,代碼編寫有個這樣的原則:能不用繼承就不用繼承渗常,能使用委托實現(xiàn)的就不使用繼承壮不。兩個類有明顯示的層級關系時使用繼承,沒有明顯的層級關系皱碘,僅僅是為了在一個類中使用另一個類的方法時應該使用委托询一。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市癌椿,隨后出現(xiàn)的幾起案子健蕊,更是在濱河造成了極大的恐慌,老刑警劉巖踢俄,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绊诲,死亡現(xiàn)場離奇詭異,居然都是意外死亡褪贵,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門抗俄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脆丁,“玉大人,你說我怎么就攤上這事动雹〔畚溃” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵胰蝠,是天一觀的道長歼培。 經常有香客問我震蒋,道長,這世上最難降的妖魔是什么躲庄? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任查剖,我火速辦了婚禮,結果婚禮上噪窘,老公的妹妹穿的比我還像新娘笋庄。我一直安慰自己,他們只是感情好倔监,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布直砂。 她就那樣靜靜地躺著,像睡著了一般浩习。 火紅的嫁衣襯著肌膚如雪静暂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天谱秽,我揣著相機與錄音洽蛀,去河邊找鬼。 笑死弯院,一個胖子當著我的面吹牛辱士,可吹牛的內容都是我干的。 我是一名探鬼主播听绳,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼颂碘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了椅挣?” 一聲冷哼從身側響起头岔,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鼠证,沒想到半個月后峡竣,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡量九,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年适掰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荠列。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡类浪,死狀恐怖,靈堂內的尸體忽然破棺而出肌似,到底是詐尸還是另有隱情费就,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布川队,位于F島的核電站力细,受9級特大地震影響睬澡,放射性物質發(fā)生泄漏。R本人自食惡果不足惜眠蚂,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一煞聪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧河狐,春花似錦米绕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至捐祠,卻和暖如春碱鳞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背踱蛀。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工窿给, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人率拒。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓崩泡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親猬膨。 傳聞我的和親對象是個殘疾皇子角撞,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內容

  • 面向對象編程(OOP) 在前面的章節(jié)中谒所,我們學習了Kotlin的語言基礎知識、類型系統(tǒng)沛申、集合類以及泛型相關的知識劣领。...
    Tenderness4閱讀 4,419評論 1 6
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法铁材,內部類的語法尖淘,繼承相關的語法,異常的語法著觉,線程的語...
    子非魚_t_閱讀 31,587評論 18 399
  • 吃“草”是不可能的村生!這輩子都不可能吃“草”的! 就和導語說的一樣固惯,我是一個拒絕吃“草”的人。 因此缴守,即便是減重期間...
    螭印閱讀 237評論 0 0
  • 又是很久很久沒寫文兒葬毫,今天的確克制不住我內心的洪荒之力镇辉,必須寫出來,哪天看看一定能笑一笑贴捡! 事情是這樣的: 很久之...
    英倫小兔子閱讀 414評論 1 2
  • 小李很多時候他真的很迷茫忽肛,他來自農村今年二十四了,大學畢業(yè)以來他烂斋,并沒有工作走上了創(chuàng)業(yè)的道路屹逛,但同時走上了不歸...
    時空偷獵者閱讀 103評論 0 0