大话设计模式
字体: 16 + -

第191章

大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();//赢球就可以了,被媒体吹捧的是教练和球员,而老板有了钱,但我们可不知道内幕的原因,因为看起来老板没有参加实际的操作。”