目錄
- 概述
- 策略模式含義
- 策略模式的三種角色
- 策略模式實現(xiàn)步驟
- 策略模式設計代碼實現(xiàn)
- php7進階到架構(gòu)師相關(guān)閱讀
概述
這是關(guān)于php進階到架構(gòu)之php7核心技術(shù)與實戰(zhàn)學習的系列課程:php常用設計模式之策略模式
學習目標:
- 掌握策略模式的含義
- 掌握策略模式設計實現(xiàn)
- 舉一反三實際開發(fā)中應用設計模式
策略模式含義
策略模式指的是程序中涉及決策控制的一種模式,是一組算法的封裝,動態(tài)選擇需要的算法并使用。
策略模式的三種角色
- 抽象策略角色
- 具體策略角色
- 環(huán)境角色(對抽象策略角色的引用)
策略模式實現(xiàn)步驟
1.定義抽象角色類(定義好各個實現(xiàn)的共同抽象方法)
2.定義具體策略類(具體實現(xiàn)父類的共同方法)
3.定義環(huán)境角色類(傳入抽象角色類,調(diào)用抽象策略類方法)
策略模式,生活中的實例:
例如下班回家,我可以有幾個策略考慮:我可以騎單車,乘坐公交車,乘地鐵等策略
還比如網(wǎng)站開發(fā)個人中心頁面,
不同的用戶類型顯示個人主頁不一樣,這個可以使用策略模式,即針對不同的用戶使用不同的策略。
策略模式設計代碼實現(xiàn)
//抽象策略類
abstract class BaseUserStratege{
abstract public function center();//個人中心
}
//具體策略普通用戶策略
class CommonUserStratege extends BaseUserStratege{
public function center()
{
echo 'common user center';
}
}
//具體策略VIP用戶策略
class VipUserStratege extends BaseUserStratege{
public function center()
{
echo 'vip user center';
}
}
//環(huán)境角色,對抽象策略類的引用
class UserStrategeContext{
private $baseUserStratege = null;
public function __construct($baseUserStratege)
{
$this->baseUser = $baseUser;
}
public function center(){
return $this->baseUserStratege->center();
}
}
//根據(jù)不同用戶類型創(chuàng)建不同的具體決策類,比如vip用戶,就創(chuàng)建VipUser策略
$user = new VipUserStratege();
$userStrategeContext = new UserStrategeContext($user);
$userStrategeContext->center();
php7進階到架構(gòu)師相關(guān)閱讀
https://www.kancloud.cn/gofor/gofor