-
抽象命令類 command:
- abstract execute方法:執(zhí)行該命令(即自己)
-
具體命令類(針對(duì)不同場(chǎng)景,有不同的命令)
- 實(shí)現(xiàn) execute方法:協(xié)調(diào)每個(gè)ReceiverImpl的業(yè)務(wù)邏輯
- 依賴的多個(gè)ReceiverImpl的屬性和setter
-
抽象接受者類 Receiver:
- abstract doSomething方法:執(zhí)行所屬自己職能的業(yè)務(wù)邏輯。
-
接受者實(shí)現(xiàn)類 ReceiverImpl:
- 實(shí)現(xiàn) doSomething 方法
-
負(fù)責(zé)人 Invoker類
- 抽象命令屬性典挑,帶setter
- action方法:調(diào)用command.execute方法
使用例子
invoker = new Invoker();
command1 = new CommandImpl1();
invoker.setCommand(command1);
invoker.action();
總結(jié)
優(yōu)點(diǎn)
- Invoker 和 Receiver 解耦
- 針對(duì)業(yè)務(wù)場(chǎng)景的變化邀跃,只需要修改或增加Receiver吆录,并增加CommandImpl來(lái)應(yīng)對(duì)新的變化泌神,Invoker無(wú)需改動(dòng)力穗,只管接受新命令CommandImpl即可
- ReceiverImpl 類似同事拷橘,只管做好自己的職能局义,提供專屬業(yè)務(wù)方法;Command類似中介冗疮,N個(gè)場(chǎng)景有N個(gè)CommandImpl萄唇,協(xié)調(diào)各個(gè)ReceiverImpl合作達(dá)到業(yè)務(wù)場(chǎng)景需求;Invoker可以理解成暴露給外部的服務(wù)术幔。
缺點(diǎn)
隨著業(yè)務(wù)場(chǎng)景的多樣性另萤,CommandImpl的數(shù)量可能會(huì)膨脹不好管理。