ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## **策略模式** 策略模式指的是程序中涉及决策控制的一种模式,是一组算法的封装,动态选择需要的算法并使用。 ## 策略模式的三种角色 抽象策略角色 具体策略角色 环境角色(对抽象策略角色的引用) ## 策略模式实现步骤 1.定义抽象角色类(定义好各个实现的共同抽象方法) 2.定义具体策略类(具体实现父类的共同方法) 3.定义环境角色类(传入抽象角色类,调用抽象策略类方法) 策略模式,生活中的实例: 例如下班回家,我可以有几个策略考虑:我可以骑单车,乘坐公交车,乘地铁等策略 还比如网站开发个人中心页面,不同的用户类型显示个人主页不一样,这个可以使用策略模式,即针对不同的用户使用不同的策略。 ## 策略模式设计代码实现 ~~~ //抽象策略类 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'; } } //环境角色,对抽象策略类的引用 class UserStrategeContext{ private $baseUserStratege = null; public function __construct($baseUserStratege) { $this->baseUser = $baseUser; } public function center(){ return $this->baseUserStratege->center(); } } //根据不同用户类型创建不同的具体决策类,比如vip用户,就创建VipUser策略 $user = new VipUserStratege(); $userStrategeContext = new UserStrategeContext($user); $userStrategeContext->center(); ~~~