1 package com.shejimoshi.behavioral.Command; 2 3 4 /** 5 * 功能:接收命令著者,這個人可以執行多種命令 6 * 時間:2016年3月2日上午11:07:30 7 * 作者:cutter_point 8 */ 9 public class Re
1 package com.shejimoshi.behavioral.Command; 2 3 4 /** 5 * 功能:接收命令著者,這個人可以執行多種命令 6 * 時間:2016年3月2日上午11:07:30 7 * 作者:cutter_point 8 */ 9 public class Recipient 10 { 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 Command 10 { 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 Command 10 { 11 12 public FindPhoneNumCommand(Recipient r) 13 { 14 super(r); 15 } 16 17 @Override 18 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 Command 10 { 11 12 public FindPhoneSiteCommand(Recipient r) 13 { 14 super(r); 15 } 16 17 @Override 18 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:16 13 * 作者:cutter_point 14 */ 15 public class Sponsor 16 { 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 Test 10 { 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 查找手機號碼 查找手機位置