策略模式

介绍:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户

1.定义抽象算法类

1 //抽象算法类
2     abstract class strategy
3     { 
4        //算法方法
5         public abstract void AlgorithmInterface();
6     }

2.定义具体的算法去实现抽象类

 1 //具体算法A
 2     class ConcreteStrategyA : strategy
 3     { 
 4         //算法A实现方法
 5         public override void AlgorithmInterface()
 6         {
 7             Console.WriteLine("我是算法A的实现方法!");
 8         }
 9     }
10     //具体算法B
11     class ConcreteStrategyB : strategy
12     { 
13         //算法B实现方法
14         public override void AlgorithmInterface()
15         {
16             Console.WriteLine("我是算法B的实现方法!");
17         }
18     }
19     //具体算法C
20     class ConcreteStrategyC : strategy
21     { 
22         //算法C实现方法
23         public override void AlgorithmInterface()
24         {
25             Console.WriteLine("我是算未能C的实现方法!");
26         }
27     }

3.上下文,类中有算法类的属性,有一个调用算法类的方法

 1 class Context 
 2     {
 3         private strategy strate;
 4         public Context(strategy strate) 
 5         {
 6             this.strate = strate;
 7         }
 8         public void ContextInterface() 
 9         {
10             strate.AlgorithmInterface();
11         }
12     }

4.客户端调用

1 class Program
2     {
3         static void Main(string[] args)
4         {
5             //获取上下文类
6             Context context = new Context(new ConcreteStrategyA());
7             context.ContextInterface();
8         }
9     }

 

posted @ 2017-04-12 23:11  爱生活,爱代码  阅读(256)  评论(0编辑  收藏  举报