🐳该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。
我们通过一个活动策划来举例策略模式,如商城中的店铺搞促销活动,有时活动是买一送一,有时候是全场八折。
🐤抽象策略类(活动共同的接口)
- public interface IStrategy
- {
- void show();
- }
🐤具体策略角色,对策略类进行活动A“买一送一”,活动B“全场八折”的具体实现
- public class StrategyA : IStrategy
- {
- public void show()
- {
- Console.WriteLine("买一送一");
- }
- }
-
- public class StrategyB : IStrategy
- {
- public void show()
- {
- Console.WriteLine("全场8折!");
- }
- }
- public class Context
- {
- private IStrategy _strategy;
-
- public Context(IStrategy strategy)
- {
- _strategy = strategy;
- }
-
- public void salesManShow()
- {
- _strategy.show();
- }
- }
🐤测试类
- class MyClass
- {
- public static void Main(string[] args)
- {
- var contextA = new Context(new StrategyA());
- contextA.salesManShow();
- var contextB = new Context(new StrategyB());
- contextB.salesManShow();
- }
- }
运行结果!