using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharp
{
class Program
{
public abstract class Duck
{
protected FlyBehavior flyBehavior;
public FlyBehavior _FlyBehavior
{
get
{
return flyBehavior;
}
set
{
flyBehavior = value;
}
}
public Duck() { }
public abstract void Display();
public void PerformFly()
{
flyBehavior.Fly();
}
}
public interface FlyBehavior
{
void Fly();
}
public class FlyWithWings: FlyBehavior
{
public void Fly()
{
Console.WriteLine("I am flying!");
}
}
public class FlyNoWay: FlyBehavior{
public void Fly()
{
Console.WriteLine("I cannot fly!");
}
}
public class SimpleDuck : Duck
{
public SimpleDuck()
{
flyBehavior = new FlyWithWings();
}
public override void Display()
{
Console.WriteLine("I just a duck!");
}
}
public static void Test()
{
Duck simpleDuck = new SimpleDuck();
simpleDuck.Display();
simpleDuck.PerformFly();
simpleDuck._FlyBehavior = new FlyNoWay();
simpleDuck.PerformFly();
}
static void Main(string[] args)
{
Test();
}
}
}
设计模式-策略模式
最新推荐文章于 2024-02-12 17:13:35 发布