首先委派模式不屬於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設計模式中的一種.與策略模式很相似.擁有以下三種角色 抽象任務角色 委派者角色 具體任務角色 委派模式,就是將任務發給委派者角色,委派者角色去委派具體任務角色 委派模式對外隱藏了具體實現,僅將委派者角色暴露給外部 委派模式和策略模式不同的是,委派者角色和具體任務...