設計模式 委派模式

2021-09-29 02:31:15 字數 2561 閱讀 7447

首先委派模式不屬於23種設計模式。

所謂委派,個人理解是:將為達到最終結果的事情交給其他人或中間人來幹,我只要最終結果,其他的事情,由我委派的人來安排。

更直白的表達就是,比如,我們想要蓋一棟樓房,蓋完之後我要刷漆,這些事情我自己肯定不能做,所以我這時候就會去找乙個「包工頭」來幫我完成這件事情,我只要告訴「包工頭」我要蓋房子、我要給房子刷漆等命令,其他的事情我不管,最終能夠交付給我這個刷完漆房子就行。那麼「包工頭」也不可能自己來幹的吧,這個時候他就會去找人,蓋樓房的、刷漆的等等;然後叫他們來幹這件事情,幹完之後,交付給我乙個刷完漆的房子即可。這個過程也就是委派模式的乙個體現。

委派模式看上去和我們之前所說的「靜態模式」非常相似,它可以說是一種特殊情況的靜態**的全權**。但是也是有區別的,「靜態**」更注重的是過程,而「委派模式」只注重「結果」。

我們現在就以上述中的例子,用**來實現以下:

先建立工人抽象類介面,他們都具有幹活的功能worker

/**

* 抽象 工人

* * @author eamonzzz

* @date 2019-10-26 15:09

*/public

inte***ce

worker

然後有乙個工人a,砌磚砌的很好,很適合蓋樓,workera

/**

* 工人a 他砌磚砌的很好,所以叫來蓋樓比較好

* * @author eamonzzz

* @date 2019-10-26 15:11

*/public

class

workera

implements

worker

}

然後再來乙個工人b,他是專業刷漆的workerb

/**

* 工人a 他砌磚砌的很好,所以叫來蓋樓比較好

* * @author eamonzzz

* @date 2019-10-26 15:11

*/public

class

workera

implements

worker

}

再來找乙個包工頭,包工頭也是一名工人,但是這個包工頭主要是組織工人幹活,contractor

/**

* 包工頭(也是一名工人),承接專案,分配工人

* * @author eamonzzz

* @date 2019-10-26 15:07

*/public

class

contractor

implements

worker

/** * 包工頭不需要自己幹活

* @param command

*/@override

public

void

dowork

(string command)

}

最後就是有蓋樓刷漆的需求的人,boss

/**

* 我,需要蓋樓的人,給包工頭下達蓋樓、刷漆的命令

* * @author eamonzzz

* @date 2019-10-26 15:06:09

**/public

class

boss

}

來看一下測試類:

/**

* @author eamonzzz

* @date 2019-10-26 15:23

*/public

class

bosstest

}

最終結果:

我是工人a,包工頭叫我 蓋樓

我是工人b,包工頭叫我 刷漆

這個過程就模擬完畢,boss 給包工頭下達命令說我要蓋樓,然後包工頭就去找能夠蓋樓的人去蓋樓;然後下達命令說,我的樓房需要刷漆了,包工頭就去找刷漆的人來幹這件事情。

springmvc中,也有委派模式的身影,比如我們最常見的dispatcherservlet它用來將我們前端url傳過來的請求,分發到相應的controller控制器來處理請求,那麼它是怎麼來完成這一過程的呢?

其實結合上面的例項場景就不難分析出來原理。

對於「委派模式」和「靜態**模式」的區別,在文章開頭已經提到過,「靜態**」注重過程,**類和被**類都要去實現乙個介面;而「委派模式」更注重結果,boss不需要實現worker這個介面。就拿敲**這個能力來說,「靜態**」的boss類需要會敲**,而「委派模式」中的boss則不需要會敲**。

設計模式 委派模式

1.簡介 角色 受託人,委託人 社會上是平等關係 公司裡面 普通員工,專案經理 各自職責不一樣 專案經理 委託人 主要職責是安排任務 普通員工 受託人 執行任務 2.特點 a 類似與中介的功能 委託機制 b 持有被委託人的引用 c 不關心過程,只關心結果 可以分發給不同員工執行,結果可能不同 d 幹...

設計模式 委派模式

委派模式,委派模式是持有被委託人的引用。不關心過程,只關心結果。相當於乙個中間價起乙個調節和任務分發的乙個作用,就像我們是客戶找管理人員找乙個可以幫我做這件事的員工 下面我們用 實現 首先定義乙個員工介面 員工 public inte ce employee編寫實現,廚師和司機 public cla...

設計模式 委派模式

點我進入github 委派模式不是23設計模式中的一種.與策略模式很相似.擁有以下三種角色 抽象任務角色 委派者角色 具體任務角色 委派模式,就是將任務發給委派者角色,委派者角色去委派具體任務角色 委派模式對外隱藏了具體實現,僅將委派者角色暴露給外部 委派模式和策略模式不同的是,委派者角色和具體任務...