策略模式
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Strategy{//果园类public class Orchard{Fruit fruit;//水果类引用public Orchard(Fruit fruit) {this.fruit = fruit;}public void Plant ()//果园种植水果{fruit.Plant();}}//抽象水果类public abstract class Fruit{public abstract void Plant();}//苹果类public class Apple : Fruit{public override void Plant() {//种植苹果Console.WriteLine(\"种植苹果!\");}}//橘子类public class Orange : Fruit{public override void Plant(){//种植橘子Console.WriteLine(\"种植橘子!\");}}class Program{static void Main(string[] args){Orchard appleOrchard = new Orchard(new Apple());//创建苹果园实例appleOrchard.Plant();//种植苹果Orchard orangeOrchard = new Orchard(new Orange());//创建苹果园实例orangeOrchard.Plant();//种植苹果Console.ReadKey();}}}
代码分析:
本实例代码实现了策略模式,创建了抽象的策略类Fruit,该类提供了种植方法的公共接口Plant,其子类Apple和Orange是种植方法的具体实现类,代码中还创建了名为Orchard的果园类,该类保存了Fruit对象的引用,在需要使用种植方法时调用Fruit对象的Plant方法,这样种植方法的调用就依赖于抽象,实现了策略模式。
说明:
策略模式的主要功能是提供一系列的算法,这些算法可以互相替换,算法的变化不会影响用户对算法的使用。策略模式的优点是可以将各个算法独立出来,方便算法的测试,而且易于算法的扩展。