来源:http://www.bjsxt.com/
一、【GOF23设计模式】_命令模式、数据库事务机制底层架构实现、撤销和回复
1 package com.test.command; 2 3 public class Receiver { 4 public void action(){ 5 System.out.println("Receiver.action()"); 6 } 7 }
1 package com.test.command; 2 3 public interface Command { 4 /** 5 * 这个方法是一个返回结果为空的方法。 6 * 实际项目中,可以根据需求设计多个不同的方法 7 */ 8 void execute(); 9 } 10 11 class ConcreteCommand implements Command{ 12 private Receiver receiver;//命令的真正的执行者 13 14 public ConcreteCommand(Receiver receiver) { 15 super(); 16 this.receiver = receiver; 17 } 18 19 @Override 20 public void execute() { 21 //命令真正执行前或后,可执行其它相关的处理 22 receiver.action(); 23 } 24 }
1 package com.test.command; 2 /** 3 * 调用者/发起者 4 */ 5 public class Invoke { 6 private Command command;//也可以通过容器List<Command>容纳很多命令对象,进行批处理。数据库底层的事务管理就是类似的结构! 7 8 public Invoke(Command command) { 9 super(); 10 this.command = command; 11 } 12 13 //业务方法,用于调用命令类的方法 14 public void call(){ 15 //执行前或后,可执行其它相关的处理 16 command.execute(); 17 } 18 }
1 package com.test.command; 2 3 public class Client { 4 public static void main(String[] args) { 5 Command c = new ConcreteCommand(new Receiver()); 6 7 Invoke i = new Invoke(c); 8 9 i.call(); 10 11 // new Receiver().action(); 12 } 13 }