命令模式

command模式:
   目的:把一个请求封装成一个对象,因此可以让你给一个clinet配置很多不同的请求.
   适应场景:
       1.为一个对象配置一些行为.command模式是面向对象编程中对callback函数的一个替换.
       2.一个command的生命周期和client无关.所以,你可以把一个receiver传到其他线程中去做填充到另一个command中
       3.可以有撤销和恢复的功能.你可以在一个command中存储一个执行过的操作的list,然后可以照着这个list重新执行一遍或者反向执行来实现恢复和撤销的功能.但是在command的接口中需要定义撤销和恢复的方法.
       4.将一些列的基本操作变成统一的操作,所以可以利用这个模式来实现事务.一个事务隔离了对数据的操作,而command也可以做到这一点.而且command为系统提供了一系列的统一的操作,这样可以很方便的在以后加入新的事务.或者是可以很方便的在原有系统的基础上加入新的操作,而不会对原来的系统造成任何的影响.
   典型的应用:
       1.实现callback函数
       2.实现撤销功能
       3.可以把一个操作的history保留下来.
   实现的方法:
       1.定义command的接口,接口里有excute方法,也可以有undo和redo方法.
       2.具体的command类实现这些接口.在实现的时候可以利用target,也就是这个命令的受影响的对象,让它来做.
       3.在client中调用command的操作,然后可以在client中记录做过的command的list,这样就可以实现撤销和恢复的操作.


实例:java.lang.runnable
今天看到了command模式在struct的mvc中的应用,确实是可以把各个controller当做一个个的command.但是在Spring的MVC中似乎不是这样的,根据今天学的内容,它的controller中的接受请求的方法的形式相当的自由,这里的实现方式应该是很多利用了反射和注解提供的信息吧.

原文地址:https://www.cnblogs.com/zhaoxinshanwei/p/5755511.html