你的位置:首页 > ASP.net教程

[ASP.net教程]【设计模式】14、命令模式


 

 

 1 package com.shejimoshi.behavioral.Command; 2  3  4 /** 5  * 功能:接收命令着者,这个人可以执行多种命令 6  * 时间:2016年3月2日上午11:07:30 7  * 作者:cutter_point 8 */ 9 public class Recipient10 {11   public void findPhoneNum()12   {13     System.out.println("查找手机号码");14   }15   16   public void findPhoneSite()17   {18     System.out.println("查找手机位置");19   }20 }

 

 1 package com.shejimoshi.behavioral.Command; 2  3  4 /** 5  * 功能:命令抽象类 6  * 时间:2016年3月2日上午11:06:32 7  * 作者:cutter_point 8 */ 9 public abstract class Command10 {11   //命令的受理者12   protected Recipient rec;13   14   public Command(Recipient r)15   {16     this.rec = r;17   }18   19   //执行命令20   public abstract void execute();21 }

 

 1 package com.shejimoshi.behavioral.Command; 2  3  4 /** 5  * 功能:查找手机号码 6  * 时间:2016年3月2日上午11:14:11 7  * 作者:cutter_point 8 */ 9 public class FindPhoneNumCommand extends Command10 {11 12   public FindPhoneNumCommand(Recipient r)13   {14     super(r);15   }16 17   @Override18   public void execute()19   {20     this.rec.findPhoneNum();21   }22 23 }

 

 1 package com.shejimoshi.behavioral.Command; 2  3  4 /** 5  * 功能:查找手机位置 6  * 时间:2016年3月2日上午11:11:58 7  * 作者:cutter_point 8 */ 9 public class FindPhoneSiteCommand extends Command10 {11   12   public FindPhoneSiteCommand(Recipient r)13   {14     super(r);15   }16   17   @Override18   public void execute()19   {20     //进行查找21     this.rec.findPhoneSite();22   }23 24 }

 

 1 package com.shejimoshi.behavioral.Command; 2  3 import java.text.DateFormat; 4 import java.text.SimpleDateFormat; 5 import java.util.ArrayList; 6 import java.util.Date; 7 import java.util.List; 8  9 10 /**11  * 功能:命令发起者12  * 时间:2016年3月2日上午11:15:1613  * 作者:cutter_point14 */15 public class Sponsor16 {17   private List<Command> orders = new ArrayList<Command>();18   19   //设置订单20   public void setOrder(Command command)21   {22     orders.add(command);23     //获得时间24     Date data = new Date();25     DateFormat format = new SimpleDateFormat("yyyy-MM-dd");26     System.out.println("增加订单" + command.getClass().getName() + "\t时间:" + format.format(data));27   }28   29   //取消订单30   public void cancelOrder(Command command)31   {32     orders.remove(command);33     //获得时间34     Date data = new Date();35     DateFormat format = new SimpleDateFormat("yyyy-MM-dd");36     System.out.println("取消订单" + command.getClass().getName() + "\t时间:" + format.format(data));37   }38   39   //执行全部订单40   public void notigy()41   {42     for(Command cmd : orders)43     {44       cmd.execute();45     }46   }47 }

 

 1 package com.shejimoshi.behavioral.Command; 2  3  4 /** 5  * 功能:将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作 6  * 时间:2016年3月2日上午11:04:34 7  * 作者:cutter_point 8 */ 9 public class Test10 {11   public static void main(String[] args)12   {13     //首先店员准备14     Recipient rec = new Recipient();15     //那些服务命令16     Command cmd1 = new FindPhoneNumCommand(rec);17     Command cmd2 = new FindPhoneSiteCommand(rec);18     19     //下单者准备20     Sponsor sps = new Sponsor();21     22     //开门迎客23     sps.setOrder(cmd1);24     sps.setOrder(cmd2);25     26     //店面开启运行模式27     sps.notigy();28     29   }30 }

 

测试结果:

增加订单com.shejimoshi.behavioral.Command.FindPhoneNumCommand	时间:2016-03-02增加订单com.shejimoshi.behavioral.Command.FindPhoneSiteCommand	时间:2016-03-02查找手机号码查找手机位置