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
《PHP边学边教》(02.Apache+PHP环境配置――上篇)
Dec 13 PHP
PHP中cookies使用指南
Mar 16 PHP
php !function_exists("T7FC56270E7A70FA81A5935B72EACBE29"))代码解密
Jan 07 PHP
超小PHP小马小结(方便查找后门的朋友)
May 05 PHP
基于MySQL分区性能的详细介绍
May 02 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
Jul 01 PHP
PHP中常见的缓存技术实例分析
Sep 23 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
Oct 20 PHP
基于PHP制作验证码
Oct 12 PHP
总结的一些PHP开发中的tips(必看篇)
Mar 24 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
Sep 30 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
动漫女神老婆无限好,但日本女生可能就不是这么一回事了!
2020/03/04 日漫
PHP开发框架总结收藏
2008/04/24 PHP
解析php类的注册与自动加载
2013/07/05 PHP
php读取3389的脚本
2014/05/06 PHP
thinkPHP实现瀑布流的方法
2014/11/29 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
js设置cookie过期及清除浏览器对应名称的cookie
2013/10/24 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
2016/05/18 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
node.js发送邮件email的方法详解
2017/01/06 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
Javascript中八种遍历方法的执行速度深度对比
2017/04/25 Javascript
浅谈React和Redux的连接react-redux
2017/12/04 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
JavaScript用document.write()输出换行的示例代码
2020/11/26 Javascript
Python Web框架Flask下网站开发入门实例
2015/02/08 Python
python字符串str和字节数组相互转化方法
2017/03/18 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
高中生评语大全
2014/04/25 职场文书
企业宣传口号
2014/06/12 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
六查六看心得体会
2014/10/14 职场文书
小学家长意见怎么写
2015/06/03 职场文书
2015年科学教研组工作总结
2015/07/22 职场文书
详解Redis瘦身指南
2021/05/26 Redis