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,Apache,和 PHP 的介绍
Oct 09 PHP
PHP 事件机制(2)
Mar 23 PHP
php设计模式 Strategy(策略模式)
Jun 26 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
Jun 17 PHP
ajax完美实现两个网页 分页功能的实例代码
Apr 16 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
Jun 19 PHP
php 读取文件头判断文件类型的实现代码
Aug 05 PHP
php备份数据库类分享
Apr 14 PHP
php计算整个mysql数据库大小的方法
Jun 19 PHP
详解PHP实现异步调用的4种方法
Mar 14 PHP
php面向对象编程self和static的区别
May 08 PHP
php登录超时检测功能实例详解
Mar 21 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年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
如何使用PHP中的字符串函数
2006/11/24 PHP
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
php操作mongoDB实例分析
2014/12/29 PHP
php页面缓存方法小结
2015/01/10 PHP
Laravel路由设定和子路由设定实例分析
2016/03/30 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
AngularJS 自定义指令详解及示例代码
2016/08/17 Javascript
javascript 面向对象function详解及实例代码
2017/02/28 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
jQuery日期范围选择器附源码下载
2017/05/23 jQuery
JS判断一个数是否是水仙花数
2017/06/11 Javascript
React应用中使用Bootstrap的方法
2017/08/15 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
2017/09/05 Javascript
解决微信授权成功后点击按返回键出现空白页和报错的问题
2020/06/08 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python collections模块实例讲解
2014/04/07 Python
利用Python破解验证码实例详解
2016/12/08 Python
浅析Python四种数据类型
2018/09/26 Python
Python可迭代对象操作示例
2019/05/07 Python
简单了解python调用其他脚本方法实例
2020/03/26 Python
构建高效的python requests长连接池详解
2020/05/02 Python
如何利用Python识别图片中的文字
2020/05/31 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
使用phonegap进行本地存储的实现方法
2017/03/31 HTML / CSS
如何使用canvas绘制可移动网格的示例代码
2020/12/14 HTML / CSS
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
优秀幼教自荐信
2014/02/03 职场文书
数控专业大学毕业生职业规划范文
2014/02/06 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书