介紹了策略模式在C#中的應用,以一個鴨子的例子來說明。首先定義了鴨子類以及鴨子的行為(方法),然后通過繼承和實現接口的方式來定義不同種類的鴨子的特性。介紹了策略模式的概念,將相同的算法封裝在不同的類中,通過傳入不同的算法對象來實現不同的行為。最后,策略模式的優勢,可以避免重復的代碼,提高代碼的復用性和可維護性。
Duck myduck = new Duck(new WhiteDuck(),new SwimDuck(),new FlyDuckNo());
myduck.Display();
myduck.Swim();
myduck.Fly();/////////////////////////////////////////////////////////////////////////////////////////
//以一個鴨子的例子來說明。首先定義了鴨子類以及鴨子的行為(方法)
//然后通過繼承和實現接口的方式來定義不同種類的鴨子的特性
//將相同的算法封裝在不同的類中,通過傳入不同的算法對象來實現不同的行為
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//定義鴨子類
/////////////////////////////////////////////////////////////////////////////////////////
class Duck
{IDisplay _display;ISwim _swim;IFly _fly;//構造函數實現策略傳入public Duck(IDisplay display, ISwim swim,IFly fly){_display= display;_swim= swim;_fly= fly;}public void Display(){_display.Display();}public void Swim(){_swim.Swim();}public void Fly(){_fly.Fly(); }}/////////////////////////////////////////////////////////////////////////////////////////
//定義功能接口,基于接口實現不同功能策略
///////////////////////////////////////////////////////////////////////////////////////////外觀接口
interface IDisplay
{void Display();
}
//定義白鴨子并實現接口
class WhiteDuck : IDisplay
{public void Display(){Console.WriteLine("我是一直白色的鴨子。");}
}
//定義黑鴨子并實現接口
class BlackDuck : IDisplay
{public void Display(){Console.WriteLine("我是一直黑色的鴨子。");}
}//游泳接口
interface ISwim
{void Swim();
}
//定義會游泳鴨子并實現接口
class SwimDuck : ISwim
{public void Swim(){Console.WriteLine("我是一只會游泳的的鴨子。");}
}
//定義不會游泳鴨子并實現接口
class SwimDuckNo : ISwim
{public void Swim(){Console.WriteLine("我是一只不會游泳的的鴨子。");}
}//飛行接口
interface IFly
{void Fly();}
//定義會飛鴨子并實現接口
class FlyDuck : IFly
{public void Fly(){Console.WriteLine("我是一只會飛的的鴨子。");}
}
//定義不會飛鴨子并實現接口
class FlyDuckNo : IFly
{public void Fly(){Console.WriteLine("我是一只不會飛的的鴨子。");}
}