大B:“爲了把命令模式講清楚,我舉一個印象深刻的例子以便理解,那就借用的足球的例子吧。”
小A:“好的。”
大B:“我設計了五個類,分別是:球隊老闆,老闆的命令(接口),教練,命令的內容,球員。”
球員的示例代碼
publicclass球員{
publicvoidrun(){
球場上奔跑;
}
publicvoidNorun(){
球場上不奔跑;
}
publicvoidshot(){
射門;
}
publicvoidNoshot(){
不射門;
}
publicvoidhoo(){
積極比賽;
}
}
教練類的示例代碼
publicclass命令的內容implements老闆的命令{
球員team;
public命令的內容(球員ateam){
this.team=ateam;
}
//贏球的方法
publicvoidvictory(){
team.hoo();
team.run();
team.shot();
}
//輸球的方法
publicvoidfail(){
team.Norun();
team.Noshot();
}
}
老闆的命令類的示例代碼
publicinterface老闆的命令{
voidvictory();
voidfail();
}
教練的示例代碼
publicclass教練{
private老闆的命令bossCommand;
public教練(老闆的命令abossCommand){
this.bossCommand=abossCommand;
}
}
老闆的示例代碼
publicclass老闆{
publicstaticvoidmain(String[]args){
球員team=new球員();
老闆的命令bossCommand=new命令的內容(team);
教練drillmaster=new教練(bossCommand);
drillmaster.victory();//贏球
drillmaster.fail();//輸球
}
}
大B:“在實際的應用中老闆就相當於用戶本人,球員相當於具體的實施類,在具體的實施類裡面有很多的方法,你可以通過一個命令類來表明你要的操作,而不是老闆類來直接來控制球員類,其中的順序是這樣的:老闆發出命令給教練,教練根據命令中的具體內容給球員,球員作出行爲給老闆掙錢,這就是老闆的命令模式,哈哈,要是老闆要打假球就發出drillmaster.fail();//輸球這樣的命令就行了。可憐的球迷呀!最後被罵的還是教練和球員,老闆要是實在看不下去了,就發出drillmaster.victory();//贏球就可以了,被媒體吹捧的是教練和球員,而老闆有了錢,但我們可不知道內幕的原因,因爲看起來老闆沒有參加實際的操作。”