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 相关文章推荐
PHP个人网站架设连环讲(三)
Oct 09 PHP
PHP入门速成教程
Mar 19 PHP
php模板之Phpbean的目录结构
Jan 10 PHP
php Ubb代码编辑器函数代码
Jul 05 PHP
PHP多例模式介绍
Jun 24 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
Jun 19 PHP
php跨站攻击实例分析
Oct 28 PHP
php实现webservice实例
Nov 06 PHP
[原创]php逐行读取txt文件写入数组的方法
Jul 02 PHP
php如何实现只替换一次或N次
Oct 29 PHP
在openSUSE42.1下编译安装PHP7 的方法
Dec 24 PHP
PHP实现的支付宝支付功能示例
Mar 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文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
JavaScript事件列表解说
2006/12/22 Javascript
工作中常用到的JS表单验证代码(包括例子)
2010/11/11 Javascript
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
JavaScript实现查找字符串中第一个不重复的字符
2014/12/29 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
jquery获取input type=text中的值的各种方式(总结)
2016/12/02 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
vue.js 上传图片实例代码
2017/06/22 Javascript
jQuery简单实现对数组去重及排序操作实例
2017/10/31 jQuery
React Native react-navigation 导航使用详解
2017/12/01 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
JS获取url参数,JS发送json格式的POST请求方法
2018/03/29 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
2018/08/23 Javascript
vue data引入本地图片的两种方式小结
2019/11/13 Javascript
[42:32]Secret vs Optic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python解析网页源代码中的115网盘链接实例
2014/09/30 Python
Centos Python2 升级到Python3的简单实现
2016/06/21 Python
python实现杨辉三角思路
2017/07/14 Python
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
Python Matplotlib实现三维数据的散点图绘制
2019/03/19 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
django 模型中的计算字段实例
2020/05/19 Python
详解Python中的路径问题
2020/09/02 Python
python re的findall和finditer的区别详解
2020/11/15 Python
英国在线药房:Chemist.co.uk
2019/03/26 全球购物
如何唤起类中的一个方法
2013/11/29 面试题
大龄毕业生求职别忘职业规划
2014/03/11 职场文书
建国大业观后感800字
2015/06/01 职场文书
小学秋季运动会通讯稿
2015/11/25 职场文书
成功的商业计划书这样写才最靠谱
2019/07/12 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python