濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > .NET 下運(yùn)用策略模式(組合行為和實(shí)體的一種模式)

.NET 下運(yùn)用策略模式(組合行為和實(shí)體的一種模式)

熱門(mén)標(biāo)簽:太原外呼電銷(xiāo)機(jī)器人費(fèi)用 使用智能電話(huà)機(jī)器人違法嗎 朝陽(yáng)市地圖標(biāo)注 蘇州銷(xiāo)售外呼系統(tǒng)預(yù)算 淘寶地圖標(biāo)注如何做 外呼系統(tǒng)用員工身份證 保山電話(huà)外呼管理系統(tǒng)怎么用 東莞語(yǔ)音電銷(xiāo)機(jī)器人排名 電話(huà)機(jī)器人廣告話(huà)術(shù)
我簡(jiǎn)單的理解策略模式就是把行為(方法)單獨(dú)的抽象出來(lái),并采用組合(Has-a)的方式,來(lái)組合行為和實(shí)體的一種模式。再來(lái)個(gè)官方的解釋?zhuān)?
Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.
網(wǎng)上也有很多資源介紹這個(gè)模式,我也不從頭說(shuō)起了。在.NET中委托給我們給我們提供了簡(jiǎn)單實(shí)現(xiàn)策略模式的方法,可以簡(jiǎn)單的把一個(gè)委托看成是一種策略方法,而且還能借組lmabda表達(dá)式這樣的形式來(lái)表達(dá)出來(lái)。比如,.NET中對(duì)數(shù)組排序的Sort的方法就是一個(gè)策略模式的實(shí)現(xiàn)模板。
復(fù)制代碼 代碼如下:

static void Main(string[] args)
{
int[] array = new int[] { 3, 2, 8, 1, 5 };
//相當(dāng)于是重新設(shè)置了一個(gè)排序策略
Array.Sort(array, (a, b) => b - a);
//這里也相當(dāng)于為每個(gè)元素安排了一個(gè)輸出策略
Array.ForEach(array, Console.WriteLine);
}

以上Array的兩個(gè)方法都可以看成是策略模式在.net中的一種實(shí)現(xiàn)。
之前寫(xiě)一些UI自動(dòng)化的時(shí)候,也借鑒了一下策略模式的思想。下面是我的一個(gè)實(shí)例:被測(cè)試網(wǎng)站是一個(gè)針對(duì)全球很多市場(chǎng)的一個(gè)網(wǎng)站,有時(shí)同一個(gè)測(cè)試點(diǎn),需要我們配置一下網(wǎng)絡(luò)代理和其它不同的設(shè)置來(lái)模擬當(dāng)?shù)厥袌?chǎng)。
復(fù)制代碼 代碼如下:

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();
//之后運(yùn)行主要的功能測(cè)試
//......
}
}
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");
}
}
}
您可能感興趣的文章:
  • php設(shè)計(jì)模式 Strategy(策略模式)
  • 關(guān)于.NET Framework中的設(shè)計(jì)模式--應(yīng)用策略模式為L(zhǎng)ist排序
  • java實(shí)現(xiàn)策略模式使用示例
  • C#策略模式(Strategy Pattern)實(shí)例教程
  • C++設(shè)計(jì)模式之策略模式
  • 淺析.net策略模式

標(biāo)簽:洛陽(yáng) 呼倫貝爾 綏化 運(yùn)城 阿里 潛江 西藏 克拉瑪依

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《.NET 下運(yùn)用策略模式(組合行為和實(shí)體的一種模式)》,本文關(guān)鍵詞  .NET,下,運(yùn)用,策略,模式,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《.NET 下運(yùn)用策略模式(組合行為和實(shí)體的一種模式)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于.NET 下運(yùn)用策略模式(組合行為和實(shí)體的一種模式)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    淮北市| 鄂尔多斯市| 大城县| 长岭县| 太康县| 永年县| 盐边县| 鸡西市| 大化| 伊吾县| 枝江市| 迭部县| 钦州市| 北票市| 临夏县| 鹿邑县| 武平县| 维西| 资溪县| 牟定县| 淅川县| 察隅县| 于田县| 忻州市| 隆安县| 凤翔县| 瓦房店市| 平舆县| 宿松县| 罗山县| 神池县| 牟定县| 崇州市| 射洪县| 利川市| 桐梓县| 敦煌市| 白银市| 克山县| 牟定县| 新宁县|