宝哥软件园

php设计模式策略(策略模式)

编辑:宝哥软件园 来源:互联网 时间:2021-10-19

抽象策略(战略)角色:定义所有支持的算法的公共接口。通常是以一个接口或抽象来实现背景使用这个接口来调用其具体战略定义的算法。

具体策略(具体策略)角色:以战略接口实现某具体算法。

环境(上下文)角色:持有一个战略类的引用,用一个具体战略对象来配置

核心代码

?phpinterface战略{ //抽象策略角色,以接口实现公共函数算法InTerface();//算法接口}类具体战略a实现战略{ //具体策略角色一个公共函数算法接口(){ } }类具体战略b实现了策略{ //具体策略角色b公共函数算法InTerface(){ } }类实现了混凝土策略{ //具体策略角色c公共函数算法InTerface(){ } }类上下文{ //环境角色私人$ _战略;公共函数_ _构造(战略$战略){ $ this-_战略=$战略;}公共函数上下文接口(){ $ this-_ strategy-algorithm接口();} }//client $ strategyA=new concrete strategyA();$context=新上下文($ strategyA);$ context-context接口();$strategyB=新的混凝土策略b();$context=新上下文($ strategyB);$ context-context接口();$ strategyC=新的具体strategyC();$context=新上下文($ strategyC);$ context-context接口();其他代码

?php /** *策略模式(Strategy.php)* *定义一系列算法,把它们一个个封装起来,并且使它们可相互替换,使用得算法的变化可独立于使用它的客户* *///- 以下是一系列算法的封闭-interface CacheTable { public function get($ key);公共函数集($key,$ value);公共函数del($ key);} //不使用缓存类也可以设置为实现了CacheTable { public function _ _ construct(){ echo ' Use NoCache br/';} public function get($ key){ return false;}公共函数集($key,$ value){返回true} public function del($ key){ return false;} } //文件缓存类文件缓存实现了缓存表{ public function _ _ construct(){ echo ' Use file cache br/';//文件缓存构造函数}公共函数获取($key) { //文件缓存的得到方法实现}公共函数集($key,$value) { //文件缓存的设置方法实现}公共函数del($key) { //文件缓存的倒三角形方法实现} } //TTServer类TTCache实现了CacheTable { public function _ _ construct(){ echo ' Use TTCachebr/';//TTServer缓存构造函数}公共函数获取($key) { //TTServer缓存的得到方法实现}公共函数集($key,$value) { //TTServer缓存的设置方法实现}公共函数del($key) { //TTServer缓存的倒三角形方法实现} } //- 以下是使用不用缓存的策略-类模型{ private $ _ cache public function _ _ construct(){ $ this-_ cache=new NoCache();}公共函数setCache($ cache){ $ this-_ cache=$ cache;} }类用户模型扩展了型号{ }类por导管模型扩展了模型{ public function _ _ construct(){ $ this-_ cache=new TTcache();} } //- 实例一下-$ mdlUser=新用户模型();$ MDL产品=新por管道模型();$ mdlpproduct-set cache(新的文件缓存());//改变缓存策略?具体的大家可以多关注一下我们以前发布的文章

更多资讯
游戏推荐
更多+