ErBing

往事已经定格,未来还要继续。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

来源: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 }

相关类的类图

开发中常见的场景

posted on 2016-08-24 13:45  ErBing  阅读(286)  评论(0编辑  收藏  举报