命令模式算是我在过往项目中除了单例模式、模版模式等简单的模式以外用的最频繁的一个设计模式。
个人感觉命令模式的魅力就在于把一个个request封装成一个个的object,非常方便扩展。命令模式类似Javascript中的回调函数一样,可以进行callback处理。当然最大的缺点就是当request过多时,Command类也会膨胀的厉害。
最近编码时想用命令模式,看书复习了下,却总感觉书上讲的没有我以前设计的一个命名模式框架好用。经过翻箱倒柜终于找出了以前设计的命令模式,这里记录下,方便以后使用。
Command接口
不再使用抽象类,改用接口。同样只有一个
1 2 3 |
public interface Command<T> extends Serializable{ public T execute(Context context) throws Exception; } |
Context类
Context类可以处理很多事情,比如类似SpringContext,比如结合策略模式和状态模式等,可以根据具体的需求来实现不同的Context类。
1 2 |
public class Context { } |