欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
設計模式學(xué)習筆記(十八)——Strategy策略模式

       這段時(shí)間在項目中接觸到了Strategy策略模式,所以就學(xué)習了一下,做一個(gè)總結。

       Strategy策略模式是一種對象行為模式。主要是應對:在軟件構建過(guò)程中,某些對象使用的算法可能多種多樣,經(jīng)常發(fā)生變化。如果在對象內部實(shí)現這些算法,將會(huì )使對象變得異常復雜,甚至會(huì )造成性能上的負擔。

       GoF《設計模式》中說(shuō)道:定義一系列算法,把它們一個(gè)個(gè)封裝起來(lái),并且使它們可以相互替換。該模式使得算法可獨立于它們的客戶(hù)變化。

       Strategy模式的結構圖如下:


 

 


      
從圖中我們不難看出:Strategy模式實(shí)際上就是將算法一一封裝起來(lái),如圖上的ConcreteStrategyA、ConcreteStrategyB、ConcreteStrategyC,但是它們都繼承于一個(gè)接口,這樣在Context調用時(shí)就可以以多態(tài)的方式來(lái)實(shí)現對于不用算法的調用。

       Strategy模式的實(shí)現如下:

       我們現在來(lái)看一個(gè)場(chǎng)景:我在下班在回家的路上,可以有這幾種選擇,走路、騎車(chē)、坐車(chē)。首先,我們需要把算法抽象出來(lái):

       public interface IStrategy

    {

        void OnTheWay();

}

接下來(lái),我們需要實(shí)現走路、騎車(chē)和坐車(chē)幾種方式。

public class WalkStrategy : IStrategy

    {

        public void OnTheWay()

        {

            Console.WriteLine("Walk on the road");

        }

    }

 

    public class RideBickStragtegy : IStrategy

    {

        public void OnTheWay()

        {

            Console.WriteLine("Ride the bicycle on the road");

        }

    }

 

    public class CarStragtegy : IStrategy

    {

        public void OnTheWay()

        {

            Console.WriteLine("Drive the car on the road");

        }

}

 

最后再用客戶(hù)端代碼調用封裝的算法接口,實(shí)現一個(gè)走路回家的場(chǎng)景:

class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine("Arrive to home");

            IStrategy strategy = new WalkStrategy();

            strategy.OnTheWay();

            Console.Read();

        }

}

運行結果如下;

Arrive to home

Walk on the road

如果我們需要實(shí)現其他的方法,只需要在Context改變一下IStrategy所示例化的對象就可以。

 

       Strategy模式的要點(diǎn):

1、Strategy及其子類(lèi)為組件提供了一系列可重用的算法,從而可以使得類(lèi)型在運行時(shí)方便地根據需要在各個(gè)算法之間進(jìn)行切換。所謂封裝算法,支持算法的變化。

2、Strategy模式提供了用條件判斷語(yǔ)句以外的另一中選擇,消除條件判斷語(yǔ)句,就是在解耦合。含有許多條件判斷語(yǔ)句的代碼通常都需要Strategy模式。

3、Strategy模式已算法為中心,可以和Factory Method聯(lián)合使用,在工廠(chǎng)中使用配制文件對變化的點(diǎn)進(jìn)行動(dòng)態(tài)的配置。這樣就使變化放到了運行時(shí)。

4、與Template Method相比,Strategy模式的中心跟集中在方法的封裝上

posted on 2006-12-15 08:45 KiddLee 閱讀(1561) 評論(13)  編輯 收藏 引用 網(wǎng)摘 所屬分類(lèi): 設計模式

FeedBack:
# 
沙發(fā)  回復  更多評論
  
# re: 設計模式學(xué)習筆記(十八)——Strategy策略模式 2006-12-15 09:26 zx
淺顯易懂  回復  更多評論
  
# re: 設計模式學(xué)習筆記(十八)——Strategy策略模式 2006-12-15 13:02 KiddLee
@大師傅似的
@zx
謝謝關(guān)注  回復  更多評論
  
# re: 設計模式學(xué)習筆記(十八)——Strategy策略模式 2006-12-15 16:13 木野狐
我覺(jué)得這個(gè)代碼不能體現 strategy 模式的特點(diǎn)。  回復  更多評論
  
# re: 設計模式學(xué)習筆記(十八)——Strategy策略模式 2006-12-15 19:20 KiddLee
@木野狐
能不能具體些。  回復  更多評論
  
# re: 設計模式學(xué)習筆記(十八)——Strategy策略模式 2006-12-16 08:06 十分之七
# re: 設計模式學(xué)習筆記(十八)——Strategy策略模式 2006-12-25 20:32 雨楊
如果能把這個(gè)程序的對應的結構圖畫(huà)出來(lái)就更好了!  回復  更多評論
  
# re: 設計模式學(xué)習筆記(十八)——Strategy策略模式 2007-01-17 15:43 高玲玲
目前為止我還沒(méi)有用過(guò)這種模式,怎么總感覺(jué)你的代碼更像是工廠(chǎng)模式呢?能不能幫我講一下這兩種模式的區別?
謝謝!  回復  更多評論
  
# re: 設計模式學(xué)習筆記(十八)——Strategy策略模式 2007-01-18 09:03 KiddLee
@高玲玲
Strategy策略模式是一種行為型模式,主要是應對使用算法的變化
Factory Method模式是一種創(chuàng )建型模式,主要是應對對象創(chuàng )建時(shí)的變化  回復  更多評論
  
# re: 設計模式學(xué)習筆記(十八)——Strategy策略模式 2007-02-02 17:44 南守擁
從我使用策略模式的體會(huì )來(lái)說(shuō),我覺(jué)得策略模式是把策略的選擇和策略的執行邏輯進(jìn)行分離.從重構的角度來(lái)講,就是把IF..Else的重復進(jìn)行抽象到一個(gè)特定位置(選擇策略),從而避免了重復.在實(shí)際的使用過(guò)程中我遇到一個(gè)問(wèn)題,就是不同的策略執行需要不同的參數,我現在的做法是把參數用一個(gè)接口進(jìn)行抽象,并提供一個(gè)工廠(chǎng)方法來(lái)產(chǎn)生相適應策略類(lèi)型的參數,擔在程序代碼上感覺(jué)不是很爽.
另外一點(diǎn)體會(huì )就是:策略模式=工廠(chǎng)模式+多態(tài)....講多指點(diǎn)...  回復  更多評論
  
# re: 設計模式學(xué)習筆記(十八)——Strategy策略模式 2007-02-07 17:42 KiddLee
@南守擁
1、策略模式常常會(huì )和工廠(chǎng)模式一起使用,但是就本意來(lái)說(shuō),我覺(jué)得他并不包含工廠(chǎng)模式
2、我覺(jué)得策略模式在使用應該是提供同樣的接口,也就是你為各個(gè)策略提供的參數是一樣的,至于參數在策略中是如何操作的,那就交給策略去做。比如說(shuō):造汽車(chē)的步驟有很多,不同的步驟安排可以形成不同的制造過(guò)程,但不能把造汽車(chē)和造自行車(chē)歸為同一類(lèi)策略
這是我的理解  回復  更多評論
  
# re: 設計模式學(xué)習筆記(十八)——Strategy策略模式 2007-02-09 09:43 南守擁
所謂工廠(chǎng)模式+多態(tài);就是在選擇一個(gè)策略的時(shí)候用工廠(chǎng)模式,而返回的實(shí)例它們都具有一個(gè)公共的接口,在客戶(hù)代碼通過(guò)返回的實(shí)例調用接口時(shí),表現出來(lái)的是多態(tài)。哈哈,我這有點(diǎn)強詞奪理了。。  回復  更多評論
  
# re: 設計模式學(xué)習筆記(十八)——Strategy策略模式 2007-07-20 00:16 dezwen
有點(diǎn)明白,但不是太懂,還需要繼續學(xué)習。以下是Sina播客Strategy策略模式的相關(guān)視頻,大家一起參考:
http://you.video.sina.com.cn/b/4736732-1294306030.html  回復  更多評論
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
策略模式(Strategy Pattern)
設計模式之策略模式
java設計模式———策略模式
java設計模式之——策略模式
點(diǎn)外賣(mài),讓我想起了 策略模式【原創(chuàng )】
策略模式 C#策略模式(Strategy Pattern)實(shí)例教程
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久