using System;
using System.Collections.Generic;
namespace MyApp
{
class Program
{
static void Main()
{
Killer killer = new Killer("Killer Fan");
KillCommand killCommand = new KillCommand(killer, "Man1");
StrikeCommand strikeCommand = new StrikeCommand(killer, "Man2");
FireCommand fireCommand = new FireCommand(killer, "Man3");
Sender sender = new Sender();
sender.AddCommand(killCommand);
sender.AddCommand(strikeCommand);
sender.AddCommand(fireCommand);
sender.ExecuteCommand();
Console.ReadKey();
}
}
class Sender
{
List<Command> commands = new List<Command>();
public void AddCommand(Command command)
{
commands.Add(command);
}
public void RemoveCommand(Command command)
{
commands.Remove(command);
}
public void ExecuteCommand()
{
foreach (Command command in this.commands)
{
command.ExecuteCommand();
}
}
}
class Killer
{
string killerName;
public Killer(string name)
{
killerName = name;
}
public void Kill(Command command)
{
Console.WriteLine("CommandType:Kill!");
DisplayInfor(command);
}
public void Strike(Command command)
{
Console.WriteLine("CommandType:Strike!");
DisplayInfor(command);
}
public void Fire(Command command)
{
Console.WriteLine("CommandType:Fire!");
DisplayInfor(command);
}
private void DisplayInfor(Command command)
{
Console.WriteLine(" Killer:{0}", killerName);
Console.WriteLine(" Target:{0}", command.TargetMan);
Console.WriteLine();
}
}
abstract class Command
{
protected Killer theKiller;
public string TargetMan { get; set; }
public Command(Killer killer, string target)
{
theKiller = killer;
TargetMan = target;
}
public abstract void ExecuteCommand();
}
class KillCommand : Command
{
public KillCommand(Killer killer, string target)
: base(killer, target)
{ }
public override void ExecuteCommand()
{
theKiller.Kill(this);
}
}
class StrikeCommand : Command
{
public StrikeCommand(Killer killer, string target)
: base(killer, target)
{ }
public override void ExecuteCommand()
{
theKiller.Strike(this);
}
}
class FireCommand : Command
{
public FireCommand(Killer killer, string target)
: base(killer, target)
{ }
public override void ExecuteCommand()
{
theKiller.Fire(this);
}
}
}
1637

被折叠的 条评论
为什么被折叠?



