如何设计一个鸭子基类,并且后代可以不同的飞行模式和叫声
策略模式定义:

用接口将Fly和Quack两个动作抽离出来,然后有各种实现类,对于具体的应用各种实现类
完整代码
namespace Quck
{
public class Duck
{
public IFlyBehavior _iflybehavior;
public IQuackBehavior _quackBehavior;
public void Display()
{
Console.WriteLine("我是基类");
}
public void PerFormQuack()
{
_quackBehavior.Quack();
}
public void PerFormFly()
{
_iflybehavior.Fly();
}
}
public interface IFlyBehavior
{
void Fly();
}
public class FlyWithWings :IFlyBehavior
{
public void Fly()
{
Console.WriteLine("我正在飞");
}
}
public class FlyNoWay : IFlyBehavior
{
public void Fly()
{
Console.WriteLine("我不会飞啊~~");
}
}
public interface IQuackBehavior
{
void Quack();
}
public class SayQuack :IQuackBehavior
{
public void Quack()
{
Console.WriteLine("呱呱");
}
}
public class SayZhiZhi : IQuackBehavior
{
public void Quack()
{
Console.WriteLine("吱吱");
}
}
public class MuteQuack :IQuackBehavior
{
public void Quack()
{
Console.WriteLine(".....");
}
}
public class MallardDuck :Duck
{
public MallardDuck(FlyWithWings flyWithWings,SayZhiZhi sayZhiZhi)/*12312412424212**/
{
_iflybehavior=flyWithWings;
_quackBehavior=sayZhiZhi;
}
}
}
本文介绍了如何使用策略模式设计一个鸭子基类,允许后代拥有不同的飞行行为(如飞翔或无法飞行)和叫声(如呱呱、吱吱或无声)。通过接口IFlyBehavior和IQuackBehavior,实现类提供了灵活性和多样性。

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



