日期:2014-05-20 浏览次数:20759 次
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Salary s = new Salary(); Prize1 p1 = new Prize1(); Prize2 p2 = new Prize2(); Prize3 p3 = new Prize3(); Command c = new ConcreteCommand(s); Invoker i = new Invoker(); i.SetCommand(c); Console.WriteLine("基本工资:" + i.ExecuteCommand()); c = new ConcreteCommand(p1); i.SetCommand(c); Console.WriteLine("奖金1:" + i.ExecuteCommand()); c = new ConcreteCommand(p2); i.SetCommand(c); Console.WriteLine("奖金2:" + i.ExecuteCommand()); c = new ConcreteCommand(p3); i.SetCommand(c); Console.WriteLine("奖金3:" + i.ExecuteCommand()); Console.Read(); } } abstract class Command { protected Receiver _receiver; public Command(Receiver receiver) { this._receiver = receiver; } abstract public string Execute(); } class ConcreteCommand : Command { public ConcreteCommand(Receiver receiver) : base(receiver) { } public override string Execute() { return base._receiver.Action(); } } class Invoker { private Command _command; public void SetCommand(Command cmd) { this._command = cmd; } public string ExecuteCommand() { return this._command.Execute(); } } class Receiver { public virtual string Action() { return "执行命令"; } } class Salary : Receiver { public override string Action() { return "1000"; } } class Prize1 : Receiver { public override string Action() { return "500"; } } class Prize2 : Receiver { public override string Action() { return "400"; } } class Prize3 : Receiver { public override string Action() { return "300"; } } }
static Invoker Salary = () => "1000";