using System;
using System.Collections.Generic;using System.Linq;using System.Text;namespace Strategy
{ /// <summary> /// 具有飞行行为 /// </summary> public interface FlyBehavior { void fly(); }/// <summary>
/// 具有吃饭行为 /// </summary> public interface EatBehavior { void eat(); }/// <summary>
/// 用翅膀飞 /// </summary> public class FlyWithWings: FlyBehavior { #region FlyBehavior 成员void FlyBehavior.fly()
{ System.Console.WriteLine("用翅膀飞"); }#endregion
}/// <summary>
/// 用翅膀飞 /// </summary> public class FlyNoWay : FlyBehavior { #region FlyBehavior 成员void FlyBehavior.fly()
{ System.Console.WriteLine("飞不了"); }#endregion
} public class EatMeat : EatBehavior {#region EatBehavior 成员
void EatBehavior.eat()
{ System.Console.WriteLine("吃肉"); }#endregion
}public class EatAll : EatBehavior
{#region EatBehavior 成员
void EatBehavior.eat()
{ System.Console.WriteLine("什么都吃,杂食"); }#endregion
}}
using System;
using System.Collections.Generic;using System.Linq;using System.Text;namespace Strategy
{ class AnimalClass { public abstract class Animal { protected FlyBehavior fb; protected EatBehavior eb; public string name;public Animal() { }
public void Fly()
{ fb.fly(); }public void Eat()
{ eb.eat(); } }public class Tiger : Animal
{ public Tiger() { fb= new FlyNoWay(); eb = new EatMeat(); name = "老虎"; } }public class Eagle : Animal
{public Eagle()
{ fb = new FlyWithWings(); eb = new EatMeat(); name = "老鹰"; } }public class Human : Animal
{ public Human() { fb = new FlyNoWay(); eb = new EatAll(); name = "人类"; } } }}
using System;
using System.Collections.Generic;using System.Linq;using System.Text;namespace Strategy
{ class Program { static void Main(string[] args) { Strategy.AnimalClass.Tiger t = new AnimalClass.Tiger(); System.Console.WriteLine(t.name); t.Eat(); t.Fly(); Strategy.AnimalClass.Eagle e = new AnimalClass.Eagle(); System.Console.WriteLine(e.name); e.Eat(); e.Fly(); Strategy.AnimalClass.Human h = new AnimalClass.Human(); System.Console.WriteLine(h.name); h.Eat(); h.Fly(); System.Console.ReadLine(); } }}