中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

C# Design Patterns (2) - Strategy

Strategy Pattern (策略模式)

所謂 Strategy Pattern 的精神,就是將策略 (算法) 封裝為一個(gè)對(duì)象,易于相互替換,如同 USB 設(shè)備一樣可即插即用;而不是將策略、具體的算法和行為,硬編碼在某個(gè)類或客戶程序中,導(dǎo)至事后的修改和擴(kuò)展不易。

若有多種「策略」,就將這些個(gè)策略,和這些策略的算法、行為,封裝在各個(gè)類中,并讓這些類,去繼承某個(gè)公用的抽象類或接口。接著在客戶程序中,就可動(dòng)態(tài)引用,且易于更換這些不同的「策略」,不會(huì)因?yàn)槿蘸筇砑印⑿薷牧四骋粋€(gè)「策略」,就得重新修改、編譯多處的源代碼。此即為一種「封裝變化點(diǎn)」的做法,將常會(huì)變化的部分進(jìn)行抽象、定義為接口,亦即實(shí)現(xiàn)「面向接口編程」的概念。且客戶程序 (調(diào)用者) 只須知道接口的外部定義即可,具體的實(shí)現(xiàn)則無須理會(huì)。

The Strategy Pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it.
                                 - Design Patterns: Elements of Reusable Object-Oriented Software

 

Strategy Pattern 適用的情景:

 

  • 應(yīng)用中的許多類,在解決某些問題時(shí)很相似,但實(shí)現(xiàn)的行為有所差異。比如:不同功能的程序,都可能要用到「排序」算法。
  • 根據(jù)運(yùn)行環(huán)境的不同,需要采用不同的算法。比如:在手機(jī)、PC 計(jì)算機(jī)上,因硬件等級(jí)不同,必須采用不同的排序算法。
  • 針對(duì)給定的目的,存在多種不同的算法,且我們可用代碼實(shí)現(xiàn)算法選擇的標(biāo)準(zhǔn)。
  • 需要封裝復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。比如:特殊的加密算法,客戶程序僅需要知道調(diào)用的方式即可。
  • 同上,算法中的羅輯和使用的數(shù)據(jù),應(yīng)該與客戶程序隔離時(shí)。

 


圖 1 這張為很多書籍和文檔都曾出現(xiàn)過的 Strategy 經(jīng)典 Class Diagram

 

01_Shell.ASPx.cs

NET技術(shù)C# Design Patterns (2) - Strategy,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲国产精久久久久久久 | 日本不卡一区二区三区 | 国产福利小视频 | 精品一区二区久久久久久久网站 | 国产一极毛片 | 国产日韩欧美91 | 欧美一区二区二区 | 亚洲免费精品 | 欧美一级视频免费看 | 久久久99精品免费观看 | 国产激情视频网址 | 中文在线a在线 | a在线视频 | 日韩黄色小视频 | 精品国产一区二区三区av片 | 午夜视频精品 | 国产精品亚洲一区二区三区在线 | 91午夜在线 | 亚洲成人网在线 | 午夜精品导航 | 欧美日韩免费一区二区三区 | hitomi一区二区三区精品 | 日韩精品不卡 | 91精品免费 | 日日想夜夜操 | 久久久激情视频 | 天天色图 | 视频一区在线 | 欧美日韩高清在线一区 | 亚洲三区视频 | 福利片在线观看 | 99免费在线观看视频 | 日韩欧美福利视频 | 91麻豆产精品久久久久久夏晴子 | av在线免费观看网址 | 亚洲精品91 | 成人在线中文 | 国产精品视频久久久 | www.久草| 日韩中文字幕一区二区 | 国产91一区二区三区 |