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自动获取目录下的模板的代码
Aug 08 PHP
php入门学习知识点二 PHP简单的分页过程与原理
Jul 14 PHP
一个php短网址的生成代码(仿微博短网址)
May 07 PHP
apache中为php 设置虚拟目录
Dec 17 PHP
用PHP代码给图片加水印
Jul 01 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
Feb 23 PHP
使用Composer安装Yii框架的方法
Mar 15 PHP
php使用pear_smtp发送邮件
Apr 15 PHP
php简单计算年龄的方法(周岁与虚岁)
Dec 06 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
May 20 PHP
详解PHP中的 input属性(隐藏 只读 限制)
Aug 14 PHP
thinkphp5实现微信扫码支付
Dec 23 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
三国漫画《火凤燎原》宣布动画化PV放出 预计2020年播出
2020/03/08 国漫
php使用socket post数据到其它web服务器的方法
2015/06/02 PHP
用 JavaScript 迁移目录
2006/12/18 Javascript
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
javascript读写json示例
2014/04/11 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
2015/09/17 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
JavaScript Date对象应用实例分享
2017/10/30 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
ES10 特性的完整指南小结
2019/03/04 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
[01:19]2014DOTA2国际邀请赛 采访TITAN战队ohaiyo 能赢DK很幸运
2014/07/12 DOTA
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
python并发2之使用asyncio处理并发
2017/12/21 Python
取numpy数组的某几行某几列方法
2018/04/03 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
用 python 进行微信好友信息分析
2020/11/28 Python
python线程优先级队列知识点总结
2021/02/28 Python
巴西女装购物网站:Eclectic
2018/04/24 全球购物
杭州-DOTNET笔试题集
2013/09/25 面试题
函授毕业生的自我鉴定
2013/11/26 职场文书
五一家具促销方案
2014/01/10 职场文书
《小池塘》教学反思
2014/02/28 职场文书
五一口号
2014/06/19 职场文书
干部作风建设工作总结
2014/10/29 职场文书
晚会闭幕词
2015/01/28 职场文书
小班上学期个人总结
2015/02/12 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
一文搞懂Python Sklearn库使用
2021/08/23 Python