設計模式1 2 策略模式 has setter

2021-08-14 12:13:23 字數 945 閱讀 3281

<?php

/*策略模式:定義乙個演算法族(繼承/實現的同乙個抽象類/介面),同一族的演算法(具體的類)可以相互替換,演算法的改變不影響客戶的使用。

有setter的策略模式,可以在例項化後動態指定演算法。

主要元素:

客戶類:tom

構造方法:定義weapon的具體物件

屬性weapon:持有實現weapon介面的乙個物件

方法fight:把行為委託給weapon物件的fight方法執行

方法setweapon:動態指定weapon物件

演算法族:weapon介面

具體的實現類:nilweapon,knife,fork

如示例test所示,nilweapon,knife,fork這3個演算法可以互相替換,使用中,當需要更換演算法時,我們完全可以不用修改tom這個客戶類,只要在例項化時賦予不同的演算法即可。同時,因為具有setweapon方法,tom類在例項化後持有的weapon可以動態改變,從而提供了更好的靈活性。

*/class

character

public

function

setweapon

($weapon)

}inte***ce

weapon

class

tomextends

character

}class

knife

implements

weapon

}class

fork

implements

weapon

}class

nilweapon

implements

weapon

}class

test

}$test = new test();

$test->run();

設計模式利劍12 策略模式

定 義 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換 優 點 1 演算法可以自由切換 2 避免使用多重條件判斷 3 擴充套件性好 缺 點 1 策略類數量多 2 所有的策略類都需要對外暴露 使用場景 1 多個類只有在演算法或行為上稍有不同的場景 2 演算法需要自由切換的場景 3 需要...

(12)策略模式

定義 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。型別 行為類模式 類圖 策略模式是對演算法的封裝,把一系列的演算法分別封裝到對應的類中,並且這些類實現相同的介面,相互之間可以替換。在行為類模式中,有一種模式也是關注對演算法的封裝 模版方法模式,對照類圖可以看到,策略模式與模版方...

設計模式 策略設計模式

策略設計模式其實就是多型的使用,父類引用指向子類物件。策略模式的最大特點是使得演算法可以在不影響客戶端的情況下發生變化,從而改變不同的功能。策略模式的缺點其實也很明顯,在於策略模式把每一種具體的策略都封裝成乙個實現類,如果策略有很多的話,很顯然是實現類就會導致過多,顯得臃腫。案列 author de...