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 相关文章推荐
APMServ使用说明
Oct 23 PHP
PHP 解决utf-8和gb2312编码转换问题
Mar 18 PHP
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
Jul 04 PHP
PHP+Mysql+jQuery实现动态展示信息
Oct 08 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
Jun 01 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
Jun 24 PHP
浅析php中如何在有限的内存中读取大文件
Jul 02 PHP
使用PHP下载CSS文件中的图片的代码
Sep 24 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
Oct 14 PHP
php网站被挂木马后的修复方法总结
Nov 06 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 PHP
PHP Swoole异步MySQL客户端实现方法示例
Oct 24 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
DOMXML函数笔记
2006/10/09 PHP
php读取30天之内的根据算法排序的代码
2008/04/06 PHP
PHP下10件你也许并不了解的事情
2008/09/11 PHP
php类常量的使用详解
2013/06/08 PHP
php设计模式之委托模式
2016/02/13 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
Javascript判断图片尺寸大小实例分析
2014/06/16 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
对象转换为原始值的实现方法
2016/06/06 Javascript
JavaScript微信定位功能实现方法
2016/11/29 Javascript
JS基于正则表达式的替换操作(replace)用法示例
2017/04/28 Javascript
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
微信小程序商品详情页规格属性选择示例代码
2017/10/30 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
2018/03/13 Javascript
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
[58:11]守擂赛第二周擂主赛 DeMonsTer vs Leopard
2020/04/28 DOTA
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
Pycharm最新激活码2019(推荐)
2019/12/31 Python
Python守护进程实现过程详解
2020/02/10 Python
Keras之fit_generator与train_on_batch用法
2020/06/17 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
python爬虫中的url下载器用法详解
2020/11/30 Python
解决HTML5手机端页面缩放的问题
2017/10/27 HTML / CSS
大学三年的自我评价
2013/12/25 职场文书
优秀教师获奖感言
2014/01/31 职场文书
考试违纪检讨书
2014/02/02 职场文书
田径运动会开幕式及主持词
2014/03/28 职场文书
志愿者宣传口号
2014/06/17 职场文书
2014年个人师德工作总结
2014/12/04 职场文书
岳庙导游词
2015/02/04 职场文书
社区工作者个人总结
2015/02/28 职场文书
SpringBoot项目中控制台日志的保存配置操作
2021/06/18 Java/Android