- 多個類之區別在表現行爲不同,可以使用strategy模式,在運行時動態選擇具體要執行的行爲
- 需要在不同的情況下使用不同的策略(算法),或者策略可以在未來用其他方式來實現
- 對客戶隱藏具體策略(算法)的具體實現細節,彼此完全獨立
- 客戶端必須知道所有的策略類,並且自行決定使用哪一個策略類,策略模式只適用於客戶端知道所有的算法或行爲的情況
- 策略模式造成很多的策略類,每個具體策略類都會產生一個新類
優點:
1.策略模式提供了管理相關算法族的方法
2.算法封閉在獨立的stratege中,使得你可以獨立於其context改變他
3.使用策略模式可以避免使用多重條件轉移語句
代碼:
<?php
interface Love{
function sajiao();
}
class KeAI implements Love
{
function sajiao()
{
echo "討厭,不理你了";
}
}
class Tiger implements Love
{
function sajiao()
{
echo "給老孃過來";
}
}
class GirlFriend
{
protected $xingge;
public function __construct($xingge)
{
$this->xingge = $xingge;
}
public function sajiao()
{
$this->xingge->sajiao();
}
}
$keai = new KeAI();
//$tiger = new Tiger();
$girlfriend = new GirlFriend($keai);
$girlfriend->sajiao();