這篇文章主要介紹了詳解JavaScript的策略模式編程,包括函數和類作為策略的情況以及多環境下的策略模式,需要的朋友可以參考下
我喜歡策略設計模式。我盡可能多的試著去使用它。究其本質,策略模式使用委托去解耦使用它們的算法類。
這樣做有幾個好處。他可以防止使用大條件語句來決定哪些算法用于特定類型的對象。將關注點分離開來,因此降低了客戶端的復雜度,同時還可以促進子類化的組成。它提高了模塊化和可測性。每一個算法都可以單獨測試。每一個客戶端都可以模擬算法。任意的客戶端都能使用任何算法。他們可以互調。就像樂高積木一樣。
為了實現策略模式,通常有兩個參與者:
該策略的對象,封裝了算法。
客戶端(上下文)對象,以即插即用的方式能使用任何策略。
這里介紹了我在Javascrip里,怎樣使用策略模式,在混亂無序的環境中怎樣使用它將庫拆成小插件,以及即插即用包的。
函數作為策略
一個函數提供了一種封裝算法的絕佳方式,同時可以作為一種策略來使用。只需通過一個到客戶端的函數并確保你的客戶端能調用該策略。
我們用一個例子來證明。假設我們想創建一個Greeter 類。它所要做的就是和人打招呼。我們希望Greeter 類能知道跟人打招呼的不同方式。為了實現這一想法,我們為打招呼創建不同的策略。
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 // Greeter is a class of object that can greet people. // It can learn different ways of greeting people through // 'Strategies.' // // This is the Greeter constructor. var Greeter = function(strateg新聞熱點
疑難解答