命令模式(Command)---笔记本

一,命令模式把一个请求或操作封装到一个对象中,命令模式允许系统使用不同的请求把客户端参数化,对请求排 队或者记录请求日志,可以提供命令的撤消等操作

在命令模式的运用上,平时也没有怎么看到,查了些相应的资料,多以编辑器等操作命令进行操作最为实在...

调用者---命令---接收者

 

例子:

角色一,调用者

 

package com.wqy.command;
/**
 * 键盘为命令触发者
 * 
 * @author wu_quanyin(09817) 
 * @version 1.0
 * @date 2010-7-17 下午04:04:22
 */
public class KeyBoardInvoker {

	private OperateCommand operateCommand;
	public KeyBoardInvoker(OperateCommand operateCommand){
		this.operateCommand=operateCommand;
	}
	
	public void action(){
		operateCommand.execute();
	}
}

 

角色二,接收者

 

package com.wqy.command;
/**
 * 笔记本为接收者执行命令
 * 
 * @author wu_quanyin(09817) 
 * @version 1.0
 * @date 2010-7-17 下午04:09:41
 */
public class NoteReceiver {

	public void writer(){
		System.out.println("正在进行写操作。。。");
	}
	
	public void undo(){
		System.out.println("正在进行取消操作...");
	}
}
 

角色三,命令

 

 

package com.wqy.command;
/**
 * @author wu_quanyin(09817) 
 * @version 1.0
 * @date 2010-7-17 上午08:30:56
 */

public interface OperateCommand {

	public void execute();
}
 

 

package com.wqy.command;
/**
 * @author wu_quanyin(09817) 
 * @version 1.0
 * @date 2010-7-17 下午04:10:29
 */

public class UndoCommand implements OperateCommand {

	private NoteReceiver receiver;
	public UndoCommand(NoteReceiver receiver){
		this.receiver=receiver;
	}
	@Override
	public void execute() {
		receiver.undo();
	}

}

 package com.wqy.command;

/**
 * @author wu_quanyin(09817) 
 * @version 1.0
 * @date 2010-7-17 下午04:10:29
 */

public class WriteCommand implements OperateCommand {

	private NoteReceiver receiver;
	public WriteCommand(NoteReceiver receiver){
		this.receiver=receiver;
	}
	@Override
	public void execute() {
		receiver.writer();
	}

}

 测试

 

 

package com.wqy.command;
/**
 * @author wu_quanyin(09817) 
 * @version 1.0
 * @date 2010-7-17 下午04:26:14
 */

public class Client {

	public static void main(String[] args) {
		NoteReceiver note=new NoteReceiver();
		OperateCommand writeCommand=new WriteCommand(note);
		KeyBoardInvoker keyBoard1=new KeyBoardInvoker(writeCommand);
		keyBoard1.action();
		System.out.println("-----------------------------");
		OperateCommand undoCommand=new UndoCommand(note);
		KeyBoardInvoker keyBoard2=new KeyBoardInvoker(undoCommand);
		keyBoard2.action();
		
	}
}

 打印出:

 

正在进行写操作。。。

-------------------------------------

正在进行取消操作...


命令模式(Command)---笔记本_第1张图片

 

你可能感兴趣的:(command)