设计模式——命令模式(上)


作者:云都小生


概述



命令模式是一种行为型模式,将请求以命令的形式封装在对象中,调用者将这些封装的对象传给具体的处理者,处理者执行相应的操作。

命令模式的关键在于,它提供一种松耦合的设计关系,将请求者与处理者进行解耦。所以命令模式又有人称为“请求发送者与接受者的解耦”。


设计框架



在命令模式中通常有这些角色:抽象命令类、具体命令类、请求者/调用者、处理者。

命令模式中关键角色是:命令类。

抽象命令类:声明了命令类的共同方法,通过这个方法可以调用处理者的共同方法。

具体命令类:每一个命令类都会对应一个具体的处理者,在具体的命令类中会掉用具体处理者的业务方法。

请求者/调用者:调用者中有一个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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值