加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

第23章《命令模式》

发布时间:2020-12-13 20:56:23 所属栏目:百科 来源:网络整理
导读:/** @Author: cxh @CreateTime: 18/1/26 15:52 @ProjectName: JavaBaseTest */ public abstract class AbstractCommand{ protected Barbecuer barbecuer; AbstractCommand(){} //执行命令 public abstract void exeCommmand(); } /** @Author: cxh @CreateTi

/**

  • @Author: cxh

  • @CreateTime: 18/1/26 15:52

  • @ProjectName: JavaBaseTest
    */
    public abstract class AbstractCommand{
    protected Barbecuer barbecuer;
    AbstractCommand(){}

    //执行命令
    public abstract void exeCommmand();
    }



/**

  • @Author: cxh
  • @CreateTime: 18/1/26 16:10
  • @ProjectName: JavaBaseTest
    */
    public class BakeChickenWingCmd extends AbstractCommand{
    BakeChickenWingCmd(Barbecuer barbecuer){
    super.barbecuer=barbecuer;
    }
    @Override
    public void exeCommmand() {
    super.barbecuer.bakeChickenWing();
    }
    }


/**

  • @Author: cxh
  • @CreateTime: 18/1/26 16:13
  • @ProjectName: JavaBaseTest
    */
    public class BakeMuttonCmd extends AbstractCommand {
    BakeMuttonCmd(Barbecuer barbecuer){
    super.barbecuer=barbecuer;
    }
    @Override
    public void exeCommmand() {
    super.barbecuer.bakeMutton();
    }
    }


/**

  • @Author: cxh
  • @CreateTime: 18/1/26 16:04
  • @ProjectName: JavaBaseTest
    */
    public class Barbecuer{
    public void bakeMutton(){
    System.out.println("烤羊肉串~");
    }
    public void bakeChickenWing(){
    System.out.println("烤鸡翅~");
    }
    }


/**

  • @Author: cxh

  • @CreateTime: 18/1/26 15:52

  • @ProjectName: JavaBaseTest
    */
    public class Client{
    //测试类
    public static void main(String[] args) {
    Waiter waiter=new Waiter();
    Barbecuer cook=new Barbecuer();

     BakeChickenWingCmd chickenWingCmd=new BakeChickenWingCmd(cook);
     BakeMuttonCmd muttonCmd=new BakeMuttonCmd(cook);
     waiter.acceptRequest(chickenWingCmd);
     waiter.acceptRequest(muttonCmd);
    
     //通知厨师
     waiter.notifyCook();

    }
    }



import java.util.ArrayList;
import java.util.List;

/**

  • @Author: cxh
  • @CreateTime: 18/1/26 15:56
  • @ProjectName: JavaBaseTest
    /
    public class Waiter{
    //用一个list保存很多请求的引用
    List list=new ArrayList<>();
    //接受请求
    public void acceptRequest(AbstractCommand command){
    double a=Math.random()
    10;
    if(a<=5){
    String type=command.getClass().getSimpleName();
    if(type.equals("BakeChickenWingCmd"))
    type="鸡翅";
    else
    type="羊肉";
    System.out.println("不好意思,"+type+"没有了,您可以看一下其他菜品");
    }else{
    list.add(command);
    System.out.println("记录下单日志,如桌号,时间等");
    }
    }
    //撤销请求
    public void cancelRequest(AbstractCommand command){
    list.remove(command);
    }
    //通知后厨做菜
    public void notifyCook(){
    list.forEach(command -> command.exeCommmand());
    }
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读