這篇文章主要介紹了詳解JavaScript的策略模式編程,包括函數(shù)和類作為策略的情況以及多環(huán)境下的策略模式,需要的朋友可以參考下
我喜歡策略設(shè)計模式。我盡可能多的試著去使用它。究其本質(zhì),策略模式使用委托去解耦使用它們的算法類。
這樣做有幾個好處。他可以防止使用大條件語句來決定哪些算法用于特定類型的對象。將關(guān)注點分離開來,因此降低了客戶端的復雜度,同時還可以促進子類化的組成。它提高了模塊化和可測性。每一個算法都可以單獨測試。每一個客戶端都可以模擬算法。任意的客戶端都能使用任何算法。他們可以互調(diào)。就像樂高積木一樣。
為了實現(xiàn)策略模式,通常有兩個參與者:
該策略的對象,封裝了算法。
客戶端(上下文)對象,以即插即用的方式能使用任何策略。
這里介紹了我在Javascrip里,怎樣使用策略模式,在混亂無序的環(huán)境中怎樣使用它將庫拆成小插件,以及即插即用包的。
函數(shù)作為策略
一個函數(shù)提供了一種封裝算法的絕佳方式,同時可以作為一種策略來使用。只需通過一個到客戶端的函數(shù)并確保你的客戶端能調(diào)用該策略。
我們用一個例子來證明。假設(shè)我們想創(chuàng)建一個Greeter 類。它所要做的就是和人打招呼。我們希望Greeter 類能知道跟人打招呼的不同方式。為了實現(xiàn)這一想法,我們?yōu)榇蛘泻魟?chuàng)建不同的策略。
?
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新聞熱點
疑難解答
圖片精選