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实现的功能是显示8条基色色带
Oct 09 PHP
PHP 选项及相关信息函数库
Dec 04 PHP
PHP的几个常用数字判断函数代码
Apr 24 PHP
PHP之短标签开启设置
Jun 17 PHP
PHP中time(),date(),mktime()区别介绍
Sep 28 PHP
Yii框架中memcache用法实例
Dec 03 PHP
非常重要的php正则表达式详解
Jan 04 PHP
ThinkPHP使用Smarty第三方插件方法小结
Mar 19 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
Feb 04 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 PHP
PHP连续签到功能实现方法详解
Dec 04 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中文件读、写、删的操作(PHP中对文件和目录操作)
2012/03/06 PHP
php批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
php简单获取文件扩展名的方法
2015/03/24 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
jquery实现在光标位置插入内容的方法
2015/02/05 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
怎么引入(调用)一个JS文件
2016/05/26 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
js实现的在本地预览图片功能示例
2019/11/09 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
JS手写一个自定义Promise操作示例
2020/03/16 Javascript
vue 动态创建组件的两种方法
2020/12/31 Vue.js
[15:57]教你分分钟做大人:斧王
2014/10/30 DOTA
python写xml文件的操作实例
2014/10/05 Python
python实用代码片段收集贴
2015/06/03 Python
Python的re模块正则表达式操作
2016/05/25 Python
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
python 实现对数据集的归一化的方法(0-1之间)
2018/07/17 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
Django中使用CORS实现跨域请求过程解析
2019/08/05 Python
keras .h5转移动端的.tflite文件实现方式
2020/05/25 Python
印尼穆斯林时尚购物网站:Hijabenka
2016/12/10 全球购物
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
eDreams德国:南欧领先的在线旅游公司
2020/12/07 全球购物
幼儿教师个人求职信范文
2013/09/21 职场文书
优秀员工自荐信范文
2013/10/05 职场文书
学生党员的自我评价范文
2014/03/01 职场文书
新员工试用期自我鉴定
2014/04/17 职场文书
高中英语演讲稿范文
2014/04/24 职场文书
竞选学生会主席演讲稿
2014/04/24 职场文书
2015年派出所民警工作总结
2015/04/24 职场文书
MySQL Innodb索引机制详细介绍
2021/11/23 MySQL
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python