2025年3月21日 星期五 甲辰(龙)年 月廿 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 设计模式

设计模式:策略模式

时间:02-28来源:作者:点击数:69

今天说一下策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户

换句话说策略模式,是指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法,比如吃东西的行为,有的人喜欢狼吞虎咽,有的人

喜欢细嚼慢咽,有的人喜欢边吃边说

策略模式的重心不是如何实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活,具有更好的维护性和扩展性。

看一下简单的代码实现

  • #region 策略模式
  • #region 抽象策略
  • public abstract class Stratety
  • {
  • public abstract void StrategyInterface();//子类要实现的方法
  • }
  • #endregion
  • #region 具体策略
  • public class ConcreteStrategyA:Stratety
  • {
  • public override void StrategyInterface()
  • {
  • Console.WriteLine("A:类A的实现方法");
  • }
  • }
  • public class ConcreteStrategyB : Stratety
  • {
  • public override void StrategyInterface()
  • {
  • Console.WriteLine("B:类B的实现方法");
  • }
  • }
  • public class ConcreteStrategyC : Stratety
  • {
  • public override void StrategyInterface()
  • {
  • Console.WriteLine("C:类C的实现方法");
  • }
  • }
  • #endregion
  • public class Context
  • {
  • Stratety stratety;
  • public Context(Stratety f_Stratety)
  • {
  • stratety = f_Stratety;
  • }
  • public Context()
  • {
  • }
  • public void ExecFun()
  • {
  • if (stratety != null)
  • stratety.StrategyInterface();
  • }
  • }
  • #endregion
  • static void Main(string[] args)
  • {
  • #region 策略模式
  • Context _context;
  • _context = new Context(new ConcreteStrategyA());
  • _context.ExecFun();
  • _context = new Context(new ConcreteStrategyB());
  • _context.ExecFun();
  • _context = new Context(new ConcreteStrategyC());
  • _context.ExecFun();
  • #endregion
  • Console.ReadLine();
  • }

策略模式的优点:

1.提供了管理相关算法族的方法。

2.可以避免使用多重条件转移语句。

缺点:

3.必须知道所有的具体策略类及它们的区别.

4.生成许多的策略类。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门