PHP策略模式写法


Posted in PHP onApril 01, 2021

1、创建抽象策略接口

interface GoodsStrategy{
    public function modifyState();
}

2、编写需要的算法类

class SupplerCommodityPoolClass implements GoodsStrategy{
    protected $goodsObj;
    protected $publicGoodsSaveObj;

    public function __construct(PublicGoodsSave $publicGoodsSaveObj,Goods $goodsObj)
    {
        $this->publicGoodsSaveObj = $publicGoodsSaveObj;
        $this->goodsObj = $goodsObj;
    }

    public function modifyState(){
    	//做你想要的处理
    }
        
}
class SupplerCommodityPoolClass_1 implements GoodsStrategy{
    protected $goodsObj;
    protected $publicGoodsSaveObj;

    public function __construct(PublicGoodsSave $publicGoodsSaveObj,Goods $goodsObj)
    {
        $this->publicGoodsSaveObj = $publicGoodsSaveObj;
        $this->goodsObj = $goodsObj;
    }

    public function modifyState(){
    	//做你想要的处理
    }
        
}
class SupplerCommodityPoolClass_2 implements GoodsStrategy{
    protected $goodsObj;
    protected $publicGoodsSaveObj;

    public function __construct(PublicGoodsSave $publicGoodsSaveObj,Goods $goodsObj)
    {
        $this->publicGoodsSaveObj = $publicGoodsSaveObj;
        $this->goodsObj = $goodsObj;
    }

    public function modifyState(){
    	//做你想要的处理
    }
        
}

3、编写配置类

class GoodsConfig{
    public $config;

    public function __construct(GoodsStrategy $config){
        $this->config = $config;
    }

    public function doWork(){
        return $this->config->modifyState();
    }
}

4、调用(客户端调用,由客户自己决定使用哪种策略,即客户自行实例化算法类)

//$reClass = new GoodsConfig(new SupplerCommodityPoolClass_1());
//$reClass = new GoodsConfig(new SupplerCommodityPoolClass_2());等
$reClass = new GoodsConfig(new SupplerCommodityPoolClass());
$reClass->doWork();

这样就完美的实现了策略模式

PHP 相关文章推荐
超强分页类2.0发布,支持自定义风格,默认4种显示模式
Jan 02 PHP
php discuz 主题表和回帖表的设计
Mar 13 PHP
php 学习资料零碎东西
Dec 04 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
Jun 21 PHP
PHP实现微信公众平台音乐点播
Mar 20 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
Oct 23 PHP
php保存任意网络图片到服务器的方法
Apr 14 PHP
PHP使用内置函数生成图片的方法详解
May 09 PHP
PHP实现路由映射到指定控制器
Aug 13 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
Dec 05 PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 PHP
Yii中特殊行为ActionFilter的使用方法示例
Oct 18 PHP
php中pcntl_fork详解
Apr 01 #PHP
php 解析非标准json、非规范json
Apr 01 #PHP
php 原生分页
Apr 01 #PHP
php远程请求CURL案例(爬虫、保存登录状态)
Apr 01 #PHP
php 防护xss,PHP的防御XSS注入的终极解决方案
Apr 01 #PHP
WordPress多语言翻译插件 - WPML使用教程
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
You might like
php生成xml简单实例代码
2009/12/16 PHP
php在页面中调用fckeditor编辑器的方法
2011/06/10 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
php分页查询mysql结果的base64处理方法示例
2017/05/18 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
javascript hashtable实现代码
2009/10/13 Javascript
使用jquery为table动态添加行的实现代码
2011/03/30 Javascript
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
Javascript中Date类型和Math类型详解
2016/02/27 Javascript
Google 地图获取API Key详细教程
2016/08/06 Javascript
jQuery 遍历map()方法详解
2016/11/04 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
解决option标签selected="selected"属性失效的问题
2017/11/06 Javascript
VueJs 搭建Axios接口请求工具
2017/11/20 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
2018/08/30 Javascript
微信小程序HTTP接口请求封装的实现
2019/02/21 Javascript
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
2017/04/11 Python
python微信跳一跳游戏辅助代码解析
2018/01/29 Python
用python处理图片之打开\显示\保存图像的方法
2018/05/04 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
python是否适合网页编程详解
2019/10/04 Python
PyTorch学习:动态图和静态图的例子
2020/01/06 Python
HTML5之web workers_动力节点Java学院整理
2017/07/17 HTML / CSS
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
俄罗斯女装店:12storeez
2019/10/25 全球购物
家长写给老师的建议书
2014/03/13 职场文书
领导班子四风表现材料
2014/08/23 职场文书
自考生自我评价
2019/06/21 职场文书
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js