命令模式由三部分構成:invoker(命令觸發器)、executor(命令處理器)、responder(命令響應器)。命令模式將客戶端(也就是這裡的invoker命令觸發器)與服務端(responder命令響應器)兩者解耦。客戶端只需要關注自己傳送哪一條命令,而無需關注服務端的實現細節;服務端只需關注命令是什麼,根據命令作出相應響應,而無需與客戶端建立直接聯絡。命令模式中的executor如同電腦中的**處理器(central processing unit),用於處理各式各樣的請求。
有人可能會質疑:不要executor,客戶端和服務端依然可以互動啊?
誠然,即使沒有executor,客戶端和服務端依然可以互動,但前提是客戶端知曉服務端能夠接受的命令以及對接受的命令作出相應的相應的情況下才能順利完成互動。這樣想固然沒有錯誤,但命令模式存在,就有它存在的合理性。
直接雙擊圖示
通過命令列輸入命令
相信大家都多多少少學過mvc框架。市面上流行的mvc框架有springmvc、struts2。大家還記得strutsprepareandexecutorfilter這個類嗎?這就是利用了命令模式。strutsprepareandexecutorfilter相當於命令模式中的中介軟體——executor,屬於controller層的模組。大家還記得dispatcherservlet這個類嗎?也用到了命令模式,同樣屬於controller層。
乙個簡單的crud模擬應用,直接上**。
/**
*@author hanlin wang
*/public
class
commandmode
}//定義呼叫器
class invoker
}//定義執行器,模仿struts2中的strutsprepareandexecutefilter
class executor
}}//定義響應器
class responder
public
static
void
remove()
public
static
void
set()
public
static
void
get()
}
java設計模式之行為型模式 策略模式
策略模式,指物件有某個行為,但是在不同的場景中,該行為有不同的實現演算法。比如每個人都要 交個人所得稅 但是 在美國交個人所得稅 和 在中國交個人所得稅 就有不同的算稅方法。許多相關類僅僅是行為不同。需要使用乙個演算法的不同實現。演算法使用了客戶不應該知道的資料。策略模式可以避免暴露複雜的 與演算法...
Java設計模式之行為型模式(狀態模式)
狀態模式允許乙個物件在其內部狀態改變時改變它的行為。物件看起來似乎修改了它的類。uml圖 已經上了注釋,很簡單,大家領會一下狀態模式的思想。author hanlin wang public class statemode 定義狀態類 class state public string getval...
23種設計模式之行為型模式 策略模式
策略模式它定義了演算法家族,分別封裝起來,讓它們之間可以相互替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。減少各種演算法類與使用演算法類之間的耦合 比如 商場收銀時如何 用打折還是返利,其實都是一些演算法,用工廠來生成演算法物件,這沒錯,但演算法本身只是一種策略,最重要的是這些演算法是隨時...