package com.lonton.designpatterns;
import java.util.List;
import java.util.ArrayList;
//Command Interface
interface Command
{
public void execute();
}
class ShutdownCommand implements Command
{
@Override
public void execute()
{
// TODO Auto-generated method stub
System.out.println("Computer is shutting down!");
}
}
class RestartCommand implements Command
{
@Override
public void execute()
{
// TODO Auto-generated method stub
System.out.println("Computer is restarting!");
}
}
//Receiver
class StorageUnit
{
private List<Command> commands;
public StorageUnit()
{
commands = new ArrayList<Command>();
}
public void storeCommand(Command command)
{
commands.add(command);
}
public Command getCommand()
{
if (!commands.isEmpty())
{
Command command = commands.get(0);
commands.remove(0);
return command;
}
else
{
return null;
}
}
}
//Invoker
class ProcessUnit
{
public void executeCommand(Command command)
{
command.execute();
}
}
class Computers
{
private StorageUnit storageUnit;
private ProcessUnit processUnit;
public Computers()
{
this.storageUnit = new StorageUnit();
this.processUnit = new ProcessUnit();
}
public void receiveCommand(Command command)
{
storageUnit.storeCommand(command);
}
public Command getCommand()
{
return storageUnit.getCommand();
}
public void executeCommand(Command command)
{
processUnit.executeCommand(command);
}
}
public class CommandTest
{
public static void main(String[] args)
{
Computers computer = new Computers();
computer.receiveCommand(new ShutdownCommand());
computer.receiveCommand(new RestartCommand());
computer.executeCommand(computer.getCommand());
computer.executeCommand(computer.getCommand());
}
}
Command 命令模式
最新推荐文章于 2024-04-16 19:26:42 发布