NBA之命令模式

135 阅读1分钟

Design Pattern:

Command pattern is a data driven design pattern and falls under behavioral pattern category 模式:命令模式是一种数据驱动的设计模式,属于行为模式范畴

现在有一个球Basketball,现在勇士准备打球Play,训练的方式有很多种,库里可以投球Shoot,杜兰特可以扣篮Dunk 教练拿着训练册命令他们一一表演,结果看最后截图

打球 具体可分为投球,扣篮等
  public interface Play {
  
      void execute();
  }

  //库里拿球投3分
  public class Shoot implements Play{
  
      private Basketball basketball;
  
      public Shoot(Basketball basketball) {
          this.basketball = basketball;
      }
  
      @Override
      public void execute() {
          basketball.shoot();
      }
  }
  //杜兰特拿球扣篮
  public class Dunk implements Play {
  
      private Basketball basketball;
  
      public Dunk(Basketball basketball) {
          this.basketball = basketball;
      }
  
      @Override
      public void execute() {
          basketball.dunk();
      }
  }

训练册记录着他们要执行的动作

    public class PlayList {
    
        private List<Play> playList = new ArrayList<>();
    
        public void addPlay(Play play){
            playList.add(play);
        }
    
        public void action(){
            for (Play play:playList){
                play.execute();
            }
        }
    }

训练开始了 有一个篮球,库里会拿着这个球投篮,杜兰特会拿这个球扣篮,教练一声令下,请开始你的表演。

public class CommandDemo {

    public static void main(String[] args) {
        Basketball basketball = new Basketball();
        Play shoot = new Shoot(basketball);
        Play dunk = new Dunk(basketball);

        PlayList playList = new PlayList();
        playList.addPlay(shoot);
        playList.addPlay(dunk);

        playList.action();
    }
}

结果