java设计模式----命令模式

命令模式,显而易见,是将命令和实际操作相隔离,解耦合,客户端只发出命令,具体的操作不需要关心,只需要完成任务。举个很简单的例子,用户点菜,然后厨师做菜,根据点菜的口味不同厨师做不同的菜,

一般来说,主要有三个对象

一个是抽象接口类,用于封装命令执行方法。

一个命令执行类(invoker):这个类主要将具体的命令传给具体的执行者。

抽象命令执行类(receiver)

还有一个类就是命令具体执行的类(Concretereceiver),封装了具体的命令

代码演示下:

抽象的命令接口类

package command;

public interface AbstractAction {
	public void excute();

}

具体命令类

package command;

public class Action1 implements AbstractAction{
	//构造接受者
	private AbstractReceiver receiver;
	 public Action1(AbstractReceiver receiver){
		 this.receiver=receiver;
	 }
	 //根据具体的命令给具体的接收者
	@Override
	public void excute() {
		System.out.println("命令1发布.....");
		this.receiver.cook();
	}

}

 

package command;

public class Action2 implements AbstractAction{
	//构造接受者
	private AbstractReceiver receiver;
	 public Action2(AbstractReceiver receiver){
		 this.receiver=receiver;
	 }
	 //根据具体的命令给具体的接收者
	@Override
	public void excute() {
		System.out.println("命令2发布.....");
		this.receiver.cook();
	}

}

 

 

调用者类

package command;

public class Invoker {
	private ActionInterface command;

	public void setCommand(ActionInterface command) {
		this.command = command;
	}
	public void action(){
		this.command.excute();
	}
}

抽象命令执行者类

package command;

public abstract class AbstractReceiver {
	public  abstract void cook();
	
}

 具体命令执行类

package command;


public class Receiver1 extends AbstractReceiver{

	@Override
	public void cook() {
		System.out.println("执行命令1完成.....");
	}

}

 

package command;


public class Receiver2 extends AbstractReceiver{

	@Override
	public void cook() {
		System.out.println("执行命令2完成.....");
	}

}

 测试类

package command;

public class Test {
	public static void main(String[] args) {
		//创建调用者
		Invoker invoker=new Invoker();
		//创建命令接收者
		AbstractReceiver receiver=new Receiver1();
		//创建命令,传入接收者
		AbstractAction command=new  Action1(receiver);
		//发布命令
		invoker.setCommand(command);
		//执行
		invoker.action();
	}

}

 结果

命令1发布.....
执行命令1完成.....

 

转载于:https://www.cnblogs.com/JAYIT/p/5091408.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值