我简单的理解策略模式就是把行为(方法)单独的抽象出来,并采用组合(Has-a)的方式,来组合行为和实体的一种模式。再来个官方的解释:
Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.
网上也有很多资源介绍这个模式,我也不从头说起了。在.NET中委托给我们给我们提供了简单实现策略模式的方法,可以简单的把一个委托看成是一种策略方法,而且还能借组lmabda表达式这样的形式来表达出来。比如,.NET中对数组排序的Sort的方法就是一个策略模式的实现模板。
复制代码 代码如下:
static void Main(string[] args)
{
int[] array = new int[] { 3, 2, 8, 1, 5 };
//相当于是重新设置了一个排序策略
Array.Sort(array, (a, b) => b - a);
//这里也相当于为每个元素安排了一个输出策略
Array.ForEach(array, Console.WriteLine);
}
以上Array的两个方法都可以看成是策略模式在.net中的一种实现。
之前写一些UI自动化的时候,也借鉴了一下策略模式的思想。下面是我的一个实例:被测试网站是一个针对全球很多市场的一个网站,有时同一个测试点,需要我们配置一下网络代理和其它不同的设置来模拟当地市场。
复制代码 代码如下:
using System;
using System.Linq;
namespace StrategyPattern
{
class Program
{
static void Main(string[] args)
{
UITest test = new UITest();
test.RunTest();
test.SetProxy("zh-cn");
test.RunTest();
}
}
class UITest
{
Action proxyStrategy;
//Default is US market
public UITest(String market = "en-us")
{
setProxy(market);
}
public void SetProxy(String market)
{
setProxy(market);
}
private void setProxy(String market)
{
Type proxy = typeof(Proxy);
var m = (from i in proxy.GetMethods()
from j in i.GetCustomAttributes(false)
let k = j as Market
where k != null
&& k.MarketName.Contains(market)
select i).First();
proxyStrategy = (Action)Delegate.CreateDelegate(typeof(Action), null, m);
}
public void RunTest()
{
proxyStrategy();
//之后运行主要的功能测试
//......
}
}
class Market : Attribute
{
public String MarketName { get; set; }
public Market(String marketName)
{
this.MarketName = marketName;
}
}
class Proxy
{
[Market("en-us,es-us")]
public void SetUSProxy()
{
Console.WriteLine("us proxy");
}
[Market("zh-cn")]
public void SetChinaProxy()
{
Console.WriteLine("china proxy");
}
[Market("en-gb")]
public void SetUKProxy()
{
Console.WriteLine("uk proxy");
}
}
}
相关推荐:
seo要懂些什么软件,seo常用软件 ,ai写作网站网址大全
SEO精通:让你的内容在搜索引擎中脱颖而出,跨境电商 推广营销
AI提取文章重要内容:让信息抓取更高效、更精准,松鼠ai 教学
什么是seo伪原创,seo就业前景伪原创怎么写 ,头像ai画怎么弄
ChatGPT模型进化历程:人工智能的智慧革命,ai 喷枪星空
什么是秀米?全方位了解这款微信公众号排版神器,宁波全网营销型网站建设
AI一键生成文章免费:革新写作方式,提升创作效率
AI提供的阅读书目对学生的专业知识有多大帮助,沃奇ai
SEO热词:提升网站排名的关键秘诀,一句话营销推广怎么写好
ChatGPT故障:科技背后的秘密与应对策略,华为什么手机带ai功能
seo配置是什么,seo设置是什么 ,ai图标制作教程
ChatGPTO1Pro模型:开启AI新纪元,免费应用带来无尽可能,苹果上的ai写作在哪里
AI搜索相似文章怎么做?揭秘高效文章检索的核心技术!,程式ai软件
SEO地址优化的秘诀:提升网站排名与流量的关键,临沂如何优化网站关键词
“洗稿技巧如何让你的文章脱颖而出,轻松提升内容创作水平!”,台州椒江seo企业排名
SEO搜索关键词是什么意思?全方位解析关键词优化的核心要素,lol ai图片
AI免费工具:提升效率与创意的秘密武器
ChatGPT免费版每天提问有次数限制吗?揭秘如何高效使用AI助手!,机甲ai手绘
seo软件工具,seo软件是什么 ,AI妆容
ChatGPT服务异常:为何影响到你的工作和生活?如何有效解决?,ai怎么保持圆角不变
AI助手不需要登陆-畅享便捷生活,随时随地高效工作,ai客服 对话
seo渠道优化是什么,seo渠道推广怎么做 ,ai121333
seo需要什么人员,seo需要什么技能 ,画大学ai
SEO联系:如何通过SEO优化提升您的网络营销效果,企业营销推广获客
seo能解决什么问题,seo会遇到哪些问题 ,挚爱花嫁ai
SEO指:如何通过精准优化提高网站流量和转化率,无锡论坛营销推广要多久
ChatGPT登录界面都不显示了?可能是这些原因导致的!,上海小学ai智能课
SEO组织:让您的网站流量倍增的秘密武器,seo 绩效标准
seo线索收集是什么,seo线索收集是什么意思 ,ai生活ai童童
AI人工智能文章生成器写作新纪元
SEO中的别类词:提升排名,轻松超越竞争对手,ai插画生肖
为什么要监控SEO效果,国家为什么要监控个人 ,抚顺ai系统
二创AI:打破创意壁垒,引领未来内容创作新潮流,背影教案网站建设游戏
ChatGPTWindows版本下载:让AI助力您的工作和生活,ai yamama
AI工具,让工作效率翻倍:AI工具教程全面解析
用AI修改文章,提升写作效率与质量的新时代
Bing无法使用怎么办?解决方法及替代方案推荐!,ai文字设计教程
SEO优化流程:助力网站快速提升排名的关键策略,1745ai
AI免费生成文章让创作变得轻松自如
SEO查看-如何通过精确分析提升网站流量与排名,东丽网站建设价格
seo软文用什么论坛,seo软文是什么意思 ,爱字幕的AI变脸不见了
《“查看更多”背后的秘密:让你的人生更加丰富多彩!》,宁安公司网站建设
seo适合什么人做,哪种seo做得好 ,晋城ai论文写作免费
seo重点是什么,seo最重要的指标 ,ai网格怎么用
ChatGPT破解版:让人工智能助力你的工作与生活,ai cos帽
SEO师:如何在数字时代为企业赢得流量与销量,十堰网站关键词优化教程
GPT在什么时候被人熟知的?从技术突破到广泛应用的背后故事,ai商业新思维ai课程
ChatGPT4账号共享-让AI助力你的学习与工作,轻松提升效率,ai巨无霸
SEO要素:优化网站排名的关键因素全解析,棒球大联盟营销推广文案
线上AI写作免费一键生成,轻松提升写作效率,解放创作思维