大B:“为了把命令模式讲清楚,我举一个印象深刻的例子以便理解,那就借用的足球的例子吧。”
小A:“好的。”
大B:“我设计了五个类,分别是:球队老板,老板的命令(接口),教练,命令的内容,球员。”
球员的示例代码
public class 球员{
public void run(){
球场上奔跑;
}
public void Norun(){
球场上不奔跑;
}
public void shot(){
射门;
}
public void Noshot(){
不射门;
}
public void hoo(){
积极比赛;
}
}
教练类的示例代码
public class 命令的内容implements 老板的命令{
球员team;
public 命令的内容(球员ateam){
this。team=ateam;
}
//赢球的方法
public void victory(){
team。hoo();
team。run();
team。shot();
}
//输球的方法
public void fail(){
team。Norun();
team。Noshot();
}
}
老板的命令类的示例代码
public interface 老板的命令{
void victory();
void fail();
}
教练的示例代码
public class 教练{
private 老板的命令bossCommand;
public 教练(老板的命令abossCommand){
this。bossCommand=abossCommand;
}
}
老板的示例代码
public class 老板{
public static void main(String[]args){
球员team=new 球员();
老板的命令bossCommand=new 命令的内容(team);
教练drillmaster=new 教练(bossCommand);
drillmaster。victory();//赢球
drillmaster。fail();//输球
}
}
大B:“在实际的应用中老板就相当于用户本人,球员相当于具体的实施类,在具体的实施类里面有很多的方法,你可以通过一个命令类来表明你要的操作,而不是老板类来直接来控制球员类,其中的顺序是这样的:老板发出命令给教练,教练根据命令中的具体内容给球员,球员作出行为给老板挣钱,这就是老板的命令模式,哈哈,要是老板要打假球就发出drillmaster。fail();//输球这样的命令就行了。可怜的球迷呀!最后被骂的还是教练和球员,老板要是实在看不下去了,就发出drillmaster。victory();//赢球就可以了,被媒体吹捧的是教练和球员,而老板有了钱,但我们可不知道内幕的原因,因为看起来老板没有参加实际的操作。”