命令模式有三個(gè)角色:1、接收者。2、命令者。3、調(diào)用者
這三個(gè)的關(guān)系是:接收者自己有方法,有屬性,有自己的行為。命令者定義為一個(gè)接口,實(shí)現(xiàn)該接口的類(lèi)持有接收者類(lèi),通過(guò)構(gòu)造加載進(jìn)來(lái),同時(shí)有一個(gè)execute()方法,里面調(diào)用接收者的方法。調(diào)用者持有命令者接口,通過(guò)set方法加載進(jìn)來(lái),并有一個(gè)action()方法這里和execute()方法區(qū)分,里面調(diào)用execute()方法,所以調(diào)用者對(duì)外只暴露該action方法便可以實(shí)現(xiàn)不同的行為。實(shí)例化的過(guò)程為:
Receive receive = new Receive();
Command cc = new ConcreteCommand(receive);
Invoker ik = new Invoker();
ik.setCommand(cc);
ik.action();//這里即為調(diào)用的cc.execute()方法但是里面又調(diào)用的receiver的方法,這里就等于將調(diào)用者與接收者通過(guò)命令者解耦了,調(diào)用者不關(guān)心內(nèi)部怎么實(shí)現(xiàn),只需調(diào)用action()方法,就可以調(diào)用receive的方法,對(duì)外只暴露了一個(gè)方法。
這個(gè)模式可以用于隊(duì)列請(qǐng)求,日志請(qǐng)求,還有struts框架的Action類(lèi)也是用命令模式實(shí)現(xiàn),就寫(xiě)到這里明天補(bǔ)充代碼。
posted on 2010-09-06 00:21 朔望魔刃 閱讀(282) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): 設(shè)計(jì)模式&&數(shù)據(jù)結(jié)構(gòu)