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中$_SERVER的详细参数与说明
Jul 29 PHP
php strlen mb_strlen计算中英文混排字符串长度
Jul 10 PHP
php多层数组与对象的转换实例代码
Aug 05 PHP
php中Array2xml类实现数组转化成XML实例
Dec 08 PHP
微信支付PHP SDK之微信公众号支付代码详解
Dec 09 PHP
php实现生成验证码实例分享
Apr 10 PHP
PHP+Ajax验证码验证用户登录
Jul 20 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
Aug 01 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
Laravel5.1框架路由分组用法实例分析
Jan 04 PHP
PHP设计模式概论【概念、分类、原则等】
May 01 PHP
php字符串函数 str类常见用法示例
May 15 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自动生成表单代码分享
2015/06/19 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
2016/03/31 PHP
javascript date格式化示例
2013/09/25 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
2013/11/19 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
基于iframe实现类似于ajax的页面无刷新
2014/05/31 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
对jQuary选择器的全面总结
2016/06/20 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
JavaScript实现自动切换图片代码
2016/10/11 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
跟老齐学Python之赋值,简单也不简单
2014/09/24 Python
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
用Python计算三角函数之acos()方法的使用
2015/05/15 Python
使用Python进行AES加密和解密的示例代码
2018/02/02 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
python实现opencv+scoket网络实时图传
2020/03/20 Python
Python图像处理二值化方法实例汇总
2020/07/24 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
美国爆米花工厂:The Popcorn Factory
2019/09/14 全球购物
简单的辞职信范文
2014/01/18 职场文书
对祖国的寄语大全
2014/04/11 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
品质保证书格式
2015/02/28 职场文书
护士医德考评自我评价
2015/03/03 职场文书
责任书范本大全
2015/05/11 职场文书
人民检察院起诉书
2015/05/20 职场文书
地道战观后感400字
2015/06/04 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书
vue+springboot实现登录验证码
2021/05/27 Vue.js
python not运算符的实例用法
2021/06/30 Python
HTML5+CSS+JavaScript实现捉虫小游戏设计和实现
2021/10/16 HTML / CSS
Li list-style-image 图片垂直居中实现方法
2023/05/21 HTML / CSS