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 相关文章推荐
数据库的日期格式转换
Oct 09 PHP
Cannot modify header information错误解决方法
Oct 08 PHP
简单的PHP留言本实例代码
May 09 PHP
PHP 命名空间实例说明
Jan 27 PHP
php检测用户是否用手机(Mobile)访问网站的类
Jan 09 PHP
PHP对接微信公众平台消息接口开发流程教程
Mar 25 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
Aug 21 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
VPS中使用LNMP安装WordPress教程
Dec 28 PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 PHP
php解析mht文件转换成html的实例
Mar 13 PHP
php实现根据身份证获取精准年龄
Feb 26 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汉字转换拼音的类
2013/06/18 PHP
实现PHP多线程异步请求的3种方法
2014/01/17 PHP
php.ini中的request_order推荐设置
2015/05/10 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
提高网站信任度的技巧
2008/10/17 Javascript
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
JS实现让访问者自助选择网页文字颜色的方法
2015/02/24 Javascript
jQuery实现点击查看大图并以弹框的形式居中
2016/08/08 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
zTree异步加载展开第一级节点的实现方法
2017/09/05 Javascript
Vue.js递归组件构建树形菜单
2017/12/24 Javascript
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
详解webpack引用jquery(第三方模块)的三种办法
2019/08/21 jQuery
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
[01:00:54]TI4正赛第二日开场
2014/07/20 DOTA
[54:24]Optic vs TNC 2018国际邀请赛小组赛BO2 第二场
2018/08/18 DOTA
Python 字符串操作实现代码(截取/替换/查找/分割)
2013/06/08 Python
python自定义解析简单xml格式文件的方法
2015/05/11 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
Python时间模块datetime、time、calendar的使用方法
2016/01/13 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
详解Django定时任务模块设计与实践
2019/07/24 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
python 控制台单行刷新,多行刷新实例
2020/02/19 Python
python对XML文件的操作实现代码
2020/03/27 Python
python 将Excel转Word的示例
2021/03/02 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
英国最大的百货公司:Harrods
2016/08/18 全球购物
大学生村官典型材料
2014/01/12 职场文书
安全保证书范文
2014/04/29 职场文书
旅游投诉信范文
2015/07/02 职场文书
2015国庆66周年宣传语
2015/07/14 职场文书
幼儿教师远程研修感悟
2015/11/18 职场文书
浅析Redis Sentinel 与 Redis Cluster
2021/06/24 Redis