会员: 密码:  免费注册 | 忘记密码 | 会员登录 网页功能: 加入收藏 设为首页 网站搜索  
技术文档 > JAVA
戏说java设计模式中的命令模式
发表日期:2004-12-25 22:34:23作者: 出处:CSDN  

    JAVA的设计模式我想大家都知道,但每个人的理解并不相同,我在这里只是阐述我的观点,要是与您的观点不同请您原谅和提出您的宝贵意见。

  为了把命令模式讲清楚,我要举一个大家都影象深刻的例子以便大家的理解,那就借用的足球的例子吧。

    UML略

    我设计了五个类,分别是:球队老板,老板的命令(接口),教练,命令的内容,球员。

    球员的示例代码

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();//输球
     }
}

    我在写这篇文章的时候时间比较紧可能逻辑上还不太清楚,但我要说明的是在实际的应用中老板就相当于用户本人,球员相当于具体的实施类,在具体的实施类里面有n多的方法,你可以通过一个命令类来表明你要的操作,而不是老板类来直接来控制球员类,其中的顺序是这样的:

    老板发出命令给教练,教练根据命令中的具体内容给球员,球员作出行为给老板挣钱,这就是老板的命令模式,哈哈要是老板要打假球就发出 drillmaster.fail();//输球 这样的命令就行了。可怜的球迷呀!最后被骂的还是教练和球员,老板要是实在看不下去了,就发出 drillmaster.victory();//赢球 就可以了,被媒体吹捧的是教练和球员,而老板有了钱,但我们可不知道内幕的原因,因为看起来老板没有参加实际的操作。
 
    我的文章先写到这里,如果那位大侠有意见,请一定要发表评论告诉我,我一定会改进文章的内容谢谢

返回顶部】 【打印本页】 【关闭窗口

关于我们 / 给我留言 / 版权举报 / 意见建议 / 网站编程QQ群   
Copyright ©2003- 2024 Lihuasoft.net webmaster(at)lihuasoft.net 加载时间 0.00431