作者:云都小生
概述
命令模式是一种行为型模式,将请求以命令的形式封装在对象中,调用者将这些封装的对象传给具体的处理者,处理者执行相应的操作。
命令模式的关键在于,它提供一种松耦合的设计关系,将请求者与处理者进行解耦。所以命令模式又有人称为“请求发送者与接受者的解耦”。
设计框架
在命令模式中通常有这些角色:抽象命令类、具体命令类、请求者/调用者、处理者。
命令模式中关键角色是:命令类。
抽象命令类:声明了命令类的共同方法,通过这个方法可以调用处理者的共同方法。
具体命令类:每一个命令类都会对应一个具体的处理者,在具体的命令类中会掉用具体处理者的业务方法。
请求者/调用者:调用者中有一个set方法,这个方法每次都用来注入一个具体的命令对象,通过该命令对象去调用接受者的方法。
接受者:接受者封装了具体的处理方法。
我们来看看图:
示范
//请求发送者
public class Invoker {
private Command command;
//通过构造方法来注入具体的命令类
public Invoker(Command command)
{
this.command = command;
}
//注入具体命令类的方法Set
public void SetCommand(Command command)
{
this.command = command;
}
//注入之后,我们每次都能通过命令类调用具体的接受类
public void call()
{
command.execute();
}
}
//抽象命令类
abstract class Command {
//封装所有命令类的共同方法
abstract void execute();
}
//具体命令类
public class TestCommand extends Command{
//封装一个具体的接受类
private Receiver receiver = new Receiver();
//具体命令类内封装着对应的接受类,通过命令类的方法去调用具体的接受类
void execute() {
receiver.action();
}
}
//具体的接受者
public class Receiver {
public void action() {
System.out.println("具体的处理方法");
}
}
//客户端类
public class Clinet {
public static void main(String[] args) {
Invoker invoker = new Invoker(new TestCommand());
invoker.call();
}
}
2018/1/8 14:34:25 @Author:Cloudking