在软件系统中,行为的请求者和行为的执行者通常是一种"紧耦合",命令模式的产生就是为了实现他们之间的"松耦合"
在命令模式中,通常包含以下几种角色:
1、ICommond:
定义命令的接口,声明命令的方法。
2、Commond
定义具体的命令,里面通常会包含一个执行者
3、Receiver
行为的执行者
4、Invoker
行为请求者,通常包含一个命令对象,也可包括多个命令对象,使用list组织起来
5、Client
创建具体的命令对象,并且设置命令对象的接收者。注意这个不是我们常规意义上的客户端,而是在组装命令对象和接收者,或许,把这个Client称为装配者会更好理解,因为真正使用命令的客户端是从Invoker来触发执行。
下面就来用java代码实现这些设计模式:
定义ICommond
public interface ICommond
{
public void execute();
}
定义Receiver
public class Receiver
{
public void doSome()
{
System.out.println("正在做某事....");
}
}
定义Commond
public class Commond implements ICommond
{
private Receiver receiver;
public Commond(Receiver receiver)
{
this.receiver=receiver;
}
@Override
public void execute()
{
// TODO Auto-generated method stub
receiver.doSome();
}
}
定义Invoker
public class Invoker
{
private ICommond commond;
public Invoker(ICommond commond)
{
this.commond=commond;
}
public void doSome()
{
commond.execute();
}
}
定义Client
public class Client
{
public static void main(String[] args)
{
Receiver receiver=new Receiver();
Commond commond=new Commond(receiver);
Invoker invoker=new Invoker(commond);
invoker.doSome();
}
}