设计模式_命令模式(Command)

package com.command;

/**
 * 命令接口
 * @author 83998
 *
 */
public interface Command {
	void action();

	void setCooker(Cooker cooker);

	Cooker getCooker();
}

package com.command;

/**
 * 手抓饼命令
 * @author 83998
 *
 */
public class CakeCommand implements Command {

	private Cooker cooker;

	@Override
	public void action() {
		cooker.doCake();
	}

	@Override
	public void setCooker(Cooker cooker) {
		this.cooker = cooker;
	}

	@Override
	public Cooker getCooker() {
		return cooker;
	}

}

package com.command;

/**
 * 比萨命令
 * @author 83998
 *
 */
public class PizzaCommand implements Command {
	private Cooker cooker;

	@Override
	public void action() {
		cooker.doPizza();
	}

	@Override
	public void setCooker(Cooker cooker) {
		this.cooker = cooker;
	}

	@Override
	public Cooker getCooker() {
		return cooker;
	}

}

package com.command;

/**
 * 厨师类
 * @author 83998
 *
 */
public class Cooker {
	public void doCake() {
		System.out.println("do a cake!");
	}

	public void doPizza() {
		System.out.println("do a pizza!");
	}
}

package com.command;

import java.util.ArrayList;

/***
 * 服务员类,接收和传达命令
 * @author 83998
 *
 */
public class Waiter {
	private Cooker cooker;
	private ArrayList<Command> commandList = new ArrayList<Command>();

	public void receive(Command command) {
		command.setCooker(cooker);
		commandList.add(command);
	}

	public void execute() {
		for (Command c : commandList) {
			c.action();
		}
	}

	public Cooker getCooker() {
		return cooker;
	}

	public void setCooker(Cooker cooker) {
		this.cooker = cooker;
	}

	public ArrayList<Command> getCommandList() {
		return commandList;
	}

	public void setCommandList(ArrayList<Command> commandList) {
		this.commandList = commandList;
	}

}

package com.command;

/**
 * 测试类
 * @author 83998
 *
 */
public class Test {
	public static void main(String[] args) {
		Cooker cooker = new Cooker();
		Waiter waiter = new Waiter();
		waiter.setCooker(cooker);

		waiter.receive(new CakeCommand());
		waiter.receive(new PizzaCommand());
		waiter.receive(new CakeCommand());

		waiter.execute();
	}
}

发布了340 篇原创文章 · 获赞 23 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Chill_Lyn/article/details/103647552
今日推荐