設計模式--策略模式

策略模式(Strategy Pattern):定義一系列算法,將每一個算法封裝起來,并讓它們可以相互替換。策略模式讓算法獨立于使用它的客戶而變化,也稱為政策模式(Policy)。
策略模式是一種對象行為型模式。

為什么需要策略模式
1.在有多種算法相似的情況下,使用 if...else 所帶來的復雜和難以維護。
2.利用面向對象的繼承和多態(tài)機制,將多個算法解耦。避免類中出現太多的if-else語句

<?php
//抽象策略接口
abstract class Strategy{
    abstract function wayToSchool();
}
//具體策略角色
class BikeStrategy extends Strategy{
    function wayToSchool(){
         echo "騎自行車去上學";
    }
}
class BusStrategy extends Strategy{
    function wayToSchool(){
         echo "乘公共汽車去上學";
    }
}
class TaxiStrategy extends Strategy{
    function wayToSchool(){
         echo "騎出租車去上學";
    }
}

//環(huán)境角色
class Context{
    private $strategy;
    //獲取具體策略
    function getStrategy($strategyName){
        try{
            $strategyReflection = new ReflectionClass($strategyName);
            $this->strategy = $strategyReflection->newInstance();

        }catch(ReflectionException $e){
             $this->strategy = ""; 
        }       
    }

    function goToSchool(){
        $this->strategy->wayToSchool();
        // var_dump($this->strategy);
    }
}

//測試
$context = new Context();
$context->getStrategy("BusStrategy");
$context->goToSchool();
 ?>
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容