其他分享
首页 > 其他分享> > android设计模式—命令设计模式

android设计模式—命令设计模式

作者:互联网

	1.系统需要将请求调用者和请求接收者解耦,使得调用者和接收者不直接交互。
	2.系统需要在不同的时间指定请求、将请求排队和执行请求。
	3.系统需要支持命令的撤销(Undo)操作和恢复(Redo)操作。
	4.系统需要将一组操作组合在一起。
	Command命令角色  :定义命令的接口,声明具体命令类需要执行的方法。这是一个抽象角色。
	
	ConcreteCommand具体命令角色:命令接口的具体实现对象,通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。
	
	Invoker请求者角色:负责调用命令对象执行请求,通常会持有命令对象(可以持有多个命令对象)。Invoker是Client真正触发命令并要求命令执行相应操作的地方(使用命令对象的入口)。

代码案例

/**
 * Created by Administrator on 2019/3/6 0006.
 * 命令抽象
 */

public interface Command {
    /**
     * 执行命令
     */
    void execute();

    /**
     * 休息
     */
    void sleep();
}

/**
 * Created by Administrator on 2019/3/6 0006.
 * <p>
 * 具体命令角色:
 * <p>
 * 进攻命令
 */

public class AttachCommand implements Command {
    private Army army;

    public AttachCommand(Army army) {
        this.army = army;
    }

    @Override
    public void execute() {
        army.attack();
    }

    @Override
    public void sleep() {
        army.sleep();
    }

}
/**
 * Created by Administrator on 2019/3/6 0006.
 * <p>
 * 具体命令角色:
 * <p>
 * 取消进攻命令
 */

public class CancelCommand implements Command {
    private Army army;

    public CancelCommand(Army army) {
        this.army = army;
    }

    @Override
    public void execute() {
        army.cancel();
    }

    @Override
    public void sleep() {
        army.sleep();
    }

}

/**
 * Created by Administrator on 2019/3/6 0006.
 * 命令的接收者,负责具体执行请求
 * <p>
 * 军队
 */

public class Army {
    public void attack() {
        Log.d("huangxiaoguo","进攻———————————————>");
    }

    public void sleep() {
        Log.d("huangxiaoguo","就地扎营———————————————>");
    }
    public void cancel() {
        Log.d("huangxiaoguo","取消进攻———————————————>");
    }
}
		Army army = new Army();
        AttachCommand attachCommand = new AttachCommand(army);
        CancelCommand cancelCommand = new CancelCommand(army);
        attachCommand.execute();
        attachCommand.sleep();
        cancelCommand.execute();
        cancelCommand.sleep();

在这里插入图片描述

/**
 * Created by Administrator on 2019/3/6 0006.
 * 具体执行者,来执行命令
 */

public class General {

    private Command cancelCommand;
    private Command attachCommand;


    public General() {
        Army army = new Army();
        attachCommand = new AttachCommand(army);
        cancelCommand = new CancelCommand(army);

    }

    public void attach() {
        attachCommand.execute();
    }

    public void cancel() {
        cancelCommand.execute();
    }
}
 		General general = new General();
        general.attach();
        general.cancel();

在这里插入图片描述

标签:army,void,Army,命令,sleep,android,设计模式,public
来源: https://blog.csdn.net/huangxiaoguo1/article/details/88246033