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 相关文章推荐
建立动态的WML站点(一)
Oct 09 PHP
smarty中先strip_tags过滤html标签后truncate截取文章运用
Oct 25 PHP
fleaphp crud操作之find函数的使用方法
Apr 23 PHP
PHP spl_autoload_register实现自动加载研究
Dec 06 PHP
PHP Global变量定义当前页面的全局变量实现探讨
Jun 05 PHP
PHP 之 写时复制介绍(Copy On Write)
May 13 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
Feb 07 PHP
PHP动态规划解决0-1背包问题实例分析
Mar 23 PHP
CI框架的安全性分析
May 18 PHP
PHP flush 函数使用注意事项
Aug 26 PHP
PHP基于XMLWriter操作xml的方法分析
Jul 17 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
global.php
2006/12/09 PHP
php $_SERVER["REQUEST_URI"]获取值的通用解决方法
2010/06/21 PHP
php+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
2014/08/06 PHP
浅谈php+phpStorm+xdebug配置方法
2015/09/17 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
js 分栏效果实现代码
2009/08/29 Javascript
遨游,飞飞,IE,空中网 浏览器无提示关闭方法
2011/07/11 Javascript
基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)
2011/09/02 Javascript
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
JavaScript中使用自然对数ln的方法
2015/06/14 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
vue-quill-editor实现图片上传功能
2017/08/08 Javascript
vue语法之拼接字符串的示例代码
2017/10/25 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
vue开发移动端底部导航条功能
2020/04/08 Javascript
vue实现购物车案例
2020/05/30 Javascript
Python判断值是否在list或set中的性能对比分析
2016/04/16 Python
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
2012/12/25 HTML / CSS
凯普林包包西班牙官网:Kipling西班牙
2019/04/12 全球购物
求职简历中自我评价
2014/01/28 职场文书
高中教师评语大全
2014/04/25 职场文书
文明村镇申报材料
2014/05/06 职场文书
公司催款律师函
2015/05/27 职场文书
2016年社会主义核心价值观心得体会
2016/01/21 职场文书
详解运行Python的神器Jupyter Notebook
2021/06/03 Python
Node.js实现爬取网站图片的示例代码
2022/04/04 NodeJs
mysql 体系结构和存储引擎介绍
2022/05/06 MySQL
Nginx 常用配置
2022/05/15 Servers