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 相关文章推荐
第十节--抽象方法和抽象类
Nov 16 PHP
从一个不错的留言本弄的mysql数据库操作类
Sep 02 PHP
比较好用的PHP防注入漏洞过滤函数代码
Apr 11 PHP
PHP 图片水印类代码
Aug 27 PHP
php接口和抽象类使用示例详解
Mar 02 PHP
PHP生成随机密码类分享
Jun 25 PHP
PHP准确取得服务器IP地址的方法
Jun 02 PHP
PHP获取文件行数的方法
Jun 10 PHP
Symfony2实现在controller中获取url的方法
Mar 18 PHP
PHP判断数组是否为空的常用方法(五种方法)
Feb 08 PHP
Yii2.0建立公共方法简单示例
Jan 29 PHP
php和nginx交互实例讲解
Sep 24 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
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
php 批量替换html标签的实例代码
2013/11/26 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
用 JavaScript 迁移目录
2006/12/18 Javascript
javascript一些不错的函数脚本代码
2008/09/10 Javascript
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
JQuery扩展插件Validate 3通过参数设置错误信息
2011/09/05 Javascript
js 使用form表单select类实现级联菜单效果
2012/12/19 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
jQuery快速高效制作网页交互特效
2017/02/24 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
vue两个组件间值的传递或修改方式
2018/07/04 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
用python写的一个wordpress的采集程序
2016/02/27 Python
Python三级目录展示的实现方法
2016/09/28 Python
详解Python Qt的窗体开发的基本操作
2019/07/14 Python
Python中logging日志库实例详解
2020/02/19 Python
python3格式化字符串 f-string的高级用法(推荐)
2020/03/04 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
《长城》教学反思
2014/02/14 职场文书
2014两会优秀的心得体会范文
2014/03/17 职场文书
校园歌咏比赛主持词
2014/03/18 职场文书
党风廉正建设责任书
2015/01/29 职场文书
财务经理岗位职责
2015/01/31 职场文书
企业百日安全活动总结
2015/05/07 职场文书
房产遗嘱范本
2015/08/06 职场文书
严以修身专题学习研讨会发言材料
2015/11/09 职场文书
关于 Python json中load和loads区别
2021/11/07 Python
「月刊Comic Alive」2022年5月号封面公开
2022/03/21 日漫