麦当劳,我三期设计模式拿你举例子了,私信联系我打钱!!!
namespace 命令模式
{
class Receiver
{
public void Action()
{
Console.WriteLine("操作成功!");
}
}
abstract class Command
{
protected Receiver receiver;
public Command(Receiver receiver)
{
this.receiver = receiver;
}
abstract public void Execute();
}
class ConcreteCommand:Command
{
public ConcreteCommand(Receiver receiver) : base(receiver) { }
public override void Execute()
{
receiver.Action();
}
}
class Invoker
{
private Command command;
public void SetCommand(Command command)
{
this.command = command;
}public void ExecuteCommand()
{
command.Execute();
}
}
class Program
{
static void Main(string[] args)
{
Receiver r = new Receiver();
Command c = new ConcreteCommand(r);
Invoker i = new Invoker();
i.SetCommand(c);
i.ExecuteCommand();
Console.Read();
}
}
}
命令允许请求的一方和接收请求的一方能够独立演化。
封装请求。
炸鸡汉堡很香,但请好好吃饭! ♥
厨师 命令接收者
package Command_McDonald;
public class Cook {
public void Chicken()
{
System.out.println("做一份炸鸡");
}
public void Hamburger()
{
System.out.println("做一份汉堡包");
}
public void fries() {
System.out.println("做一份薯条");
}
}
命令抽象接口
package Command_McDonald;
public abstract class Command {
protected Cook cook_receiver;
public Command(Cook cook_receiver) {
this.cook_receiver = cook_receiver;
}
abstract public void Excute_Command();
}
炸鸡命令,具体命令
package Command_McDonald;
public class Chicken_Command extends Command {
@Override
public void Excute_Command() {
cook_receiver.Chicken();
}
public Chicken_Command(Cook cook_receiver) {
super(cook_receiver);
// TODO Auto-generated constructor stub
}
}
package Command_McDonald;
public class Fries_Command extends Command {
@Override
public void Excute_Command() {
cook_receiver.fries();
}
public Fries_Command(Cook cook_receiver) {
super(cook_receiver);
// TODO Auto-generated constructor stub
}
}
package Command_McDonald;
public class Hamburger_Command extends Command {
@Override
public void Excute_Command() {
cook_receiver.Hamburger();
}
public Hamburger_Command(Cook cook_receiver) {
super(cook_receiver);
// TODO Auto-generated constructor stub
}
}
收银员,命令调用者
package Command_McDonald;
import java.util.ArrayList;
import java.util.List;
public class Cashier {
private List<Command> Command_Undo = new ArrayList<Command>();
public void add_Command(Command com) {
Command_Undo.add(com); //增加命令
}
public void Undo_Command(Command com) {
Command_Undo.remove(com); //移除命令
}
public void Notify() // 提交菜单
{
for(Command con:Command_Undo)
{
con.Excute_Command();//每样告诉后厨进行制作
}
}
}