设计模式:命令模式

命令设计模式需要一个操作和附带的参数,并将它们封装在一个对象中来执行,记录等等。在下面的例子中,命令是一个操作,它的参数是一个Computer,而且它们封装在Switch。

从另一个角度看,命令模式有4个部分:命令,接收者,调用者和客户端。在这个例子中,Switch是调用者,Computer是接收者。一个具体的命令有哥接收器对象并调用接收器中的方法。调用者可以使用不同的具体的命令。客户端为接收器管理使用哪一条命令。

1、命令模式类图



 2、Java命令模式的例子

package com.leon.command;

import java.util.ArrayList;
import java.util.List;

//命令接口
interface Command {
	void execute();
}

// 在这个例子中,假设你用一个开关来控制电脑

// 一个调用者
class Switch {
	private List<Command> history = new ArrayList<Command>();

	public Switch() {

	}

	public void storeAndExecute(Command command) {
		this.history.add(command);
		command.execute();
	}
}

// 接收者
class Computer {
	public void shutDown() {
		System.out.println("电脑关机");
	}

	public void restart() {
		System.out.println("电脑重启");
	}
}

//关闭掉闹的命令
class ShutDownCommand implements Command {

	private Computer computer;

	public ShutDownCommand(Computer computer) {
		this.computer = computer;
	}

	@Override
	public void execute() {
		// TODO Auto-generated method stub
		computer.shutDown();
	}

}

//重启电脑的命令
class ReStartCommand implements Command {

	private Computer computer;

	public ReStartCommand(Computer computer) {
		this.computer = computer;
	}

	@Override
	public void execute() {
		// TODO Auto-generated method stub
		computer.restart();
	}

}

public class Main {
	// 客户端
	public static void main(String[] args) {
		Computer computer = new Computer();
		ShutDownCommand shdcmd = new ShutDownCommand(computer);
		ReStartCommand rstcmd = new ReStartCommand(computer);

		Switch sw = new Switch();

		String cmd = "shutdown";

		if (cmd.equals("shutdown")) {
			sw.storeAndExecute(shdcmd);
		} else if (cmd.equals("restart")) {
			sw.storeAndExecute(rstcmd);
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值