您的位置:首页 > 汽车 > 时评 > 视频拍摄设备_包括搜索引擎排名、网页标签优化、相关链接交换、网络广告投放等_一键优化下载安装_网页设计大作业

视频拍摄设备_包括搜索引擎排名、网页标签优化、相关链接交换、网络广告投放等_一键优化下载安装_网页设计大作业

2025/1/12 1:36:49 来源:https://blog.csdn.net/weixin_45136016/article/details/144978794  浏览:    关键词:视频拍摄设备_包括搜索引擎排名、网页标签优化、相关链接交换、网络广告投放等_一键优化下载安装_网页设计大作业
视频拍摄设备_包括搜索引擎排名、网页标签优化、相关链接交换、网络广告投放等_一键优化下载安装_网页设计大作业

文章目录

  • 1.定义
  • 2.结构
  • 3.代码实现

1.定义

策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。

2.结构

在这里插入图片描述

  • 上下文 (Context) :维护指向具体策略的引用, 且仅通过策略接口与该对象进行交流
  • 策略 (Strategy) : 接口是所有具体策略的通用接口, 它声明了一个上下文用于执行策略的方法
  • 具体策略 (Concrete Strategies) : 实现了上下文所用算法的各种不同变体
  • 客户端 (Client) : 会创建一个特定策略对象并将其传递给上下文。 上下文则会提供一个设置器以便客户端在运行时替换相关联的策略

3.代码实现

实现一个计算策略:

  • 策略类接口(Strategy):
// 计算策略
public interface IConcreteStragety
{double Execute(double a, double b);
}
  • 具体策略类(Concrete Strategies):
// 加法策略
public class ConcreteStrategyAdd : IConcreteStragety
{public double Execute(double a, double b){return a + b;}
}// 减法策略
public class ConcreteStrategySubtract : IConcreteStragety
{public double Execute(double a, double b){return a - b;}
}// 乘法策略
public class ConcreteStrategyMultiply : IConcreteStragety
{public double Execute(double a, double b){return a * b;}
}
  • 上下文 (Context):
public class StragetyContext
{private IConcreteStragety stragety;public StragetyContext(IConcreteStragety stragety){this.stragety = stragety;}public void SetTaxStragety(IConcreteStragety stragety){this.stragety = stragety;}public double ExecuteStrategy(double a, double b){return stragety.Execute(a, b);}
}
  • 客户端 (Client):
StragetyContext context = new StragetyContext(new ConcreteStrategyAdd());
Console.WriteLine("加法策略:{0}", context.ExecuteStrategy(20, 10));context.SetTaxStragety(new ConcreteStrategySubtract());
Console.WriteLine("减法策略:{0}", context.ExecuteStrategy(20, 10));context.SetTaxStragety(new ConcreteStrategyMultiply());
Console.WriteLine("乘法策略:{0}", context.ExecuteStrategy(20, 10));
  • 结果

加法策略:30
减法策略:10
乘法策略:200

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com