大话设计模式之命令模式

 命令模式:

将一个请求封装成 一个对象,从而是你可以不同的请求对客户 进行参数化:
对请求排队或记录请求日志,以及支持可撤销的操作。

/**
 * 知道如何实施与执行一个请求相关地操作,任何类都可能作为一个接收者:具体地请求
 * */
public class Receiver {

	public void Action() {
		System.out.println("执行请求");
	}
}
/**
 *  用来执行操作地接口:命令,目的是为了执行请求
 * */
abstract class Command {

	protected Receiver receiver;
	public Command(Receiver receiver) {
		this.receiver=receiver;
	}
abstract public void Excute();	
}
/**
 * 将一个 接收者对象绑定于一个动作,调用接收者相应地操作,以实现Execute
 * */
public class CCommand extends Command{

	public CCommand(Receiver receiver) {
		super(receiver);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void Excute() {
		// TODO Auto-generated method stub
		receiver.Action();
	}

}
/**
 * 要求该命令执行这个请求 执行命令》》请求
 */
public class Invoker {

	private Command command;

	public void setCommand(Command command) {
		this.command = command;
	}

	public void ExcuteCommand() {
		command.Excute();
	}
}
public class Invokers {

	private List<Command> commands=new ArrayList<>();
//	增加请求
	public void setOrder(Command command) {
		if (command.toString().equals("hhh")) {
			System.out.println("拒绝请求");
		}
		else {
			commands.add(command);
			System.out.println("增加请求");
		}
	}
//	取消请求
	public void canceOrder(Command command) {
		commands.remove(command);
		System.out.println("取消请求");
	} 
//	通知
	public void notifys() {
		for (Command commandss : commands) {
			commandss.Excute();
		}
	}
}
/**
 * 客户端
 * */
public class Test1 {
public static void main(String[] args) {
//	为了执行命令
        	Invoker invoker = new Invoker();
//        	执行具体地请求
        	
        	Receiver receiver = new Receiver();
//        	为了执行具体地请求
        	Command cCommand = new CCommand(receiver);
        	invoker.setCommand(cCommand);
        	invoker.ExcuteCommand();
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值