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();
}
}
}