php设计模式--策略模式
2015-11-30 10:03
603 查看
策略模式:
策略模式我们无法通过字面意思来理解了:
首先,创建一个接口,定义子类的实现规范;
第二步,根据不同的业务逻辑,书写不同的方法,同时实现第一步中的接口.
第三步,写一个独立的类,其中有两个方法,第一个为初始化(传入第二步中的子类的对象),第二个方法 为统一的执行类(当然有了接口这个也可以省略了).
如下图:
下面是一个完整的demo:
<?php
//通过接口定义子类实现规范
interface Strategy{
public function echoInfo();
}
//实现方法,并且每个都用不同的业务逻辑(phper,javaer)
class Phper implements Strategy{
public function echoInfo()
{
echo "this is phper class";
}
}
class Javaer implements Strategy{
public function echoInfo()
{
echo "this is javaser class";
}
}
//建立一个独立的类,通过其中的一个方法,传入不同的对象来实现不同的处理过程
class Done{
//用来存储实例化的对象
private $obj;
//通过传入对象将对象赋给私有属性
public function __construct(Strategy $obj)
{
$this->obj=$obj;
}
//通过统一的实现方法来实现不同的对象内部的方法(因为有接口的限制,这个也可以省略)
public function go()
{
$this->obj->echoInfo();
}
}
//实例化独立的类,传入不同的对象参数
$obj=new Done(new Javaer);
//输出结果
$obj->go();
?>
策略模式一般用在一些输出结果需要多样话的地方,比如客户可能导出excel表,也可能导出word文件,或者生成一个柱状图等等.
本文出自 “吴泽辉的php博客” 博客,请务必保留此出处http://phpwzh.blog.51cto.com/6651035/1718054
策略模式我们无法通过字面意思来理解了:
首先,创建一个接口,定义子类的实现规范;
第二步,根据不同的业务逻辑,书写不同的方法,同时实现第一步中的接口.
第三步,写一个独立的类,其中有两个方法,第一个为初始化(传入第二步中的子类的对象),第二个方法 为统一的执行类(当然有了接口这个也可以省略了).
如下图:
下面是一个完整的demo:
<?php
//通过接口定义子类实现规范
interface Strategy{
public function echoInfo();
}
//实现方法,并且每个都用不同的业务逻辑(phper,javaer)
class Phper implements Strategy{
public function echoInfo()
{
echo "this is phper class";
}
}
class Javaer implements Strategy{
public function echoInfo()
{
echo "this is javaser class";
}
}
//建立一个独立的类,通过其中的一个方法,传入不同的对象来实现不同的处理过程
class Done{
//用来存储实例化的对象
private $obj;
//通过传入对象将对象赋给私有属性
public function __construct(Strategy $obj)
{
$this->obj=$obj;
}
//通过统一的实现方法来实现不同的对象内部的方法(因为有接口的限制,这个也可以省略)
public function go()
{
$this->obj->echoInfo();
}
}
//实例化独立的类,传入不同的对象参数
$obj=new Done(new Javaer);
//输出结果
$obj->go();
?>
策略模式一般用在一些输出结果需要多样话的地方,比如客户可能导出excel表,也可能导出word文件,或者生成一个柱状图等等.
本文出自 “吴泽辉的php博客” 博客,请务必保留此出处http://phpwzh.blog.51cto.com/6651035/1718054
相关文章推荐
- PHP
- PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
- FTP命令详解
- ThinkPHP 使用group,获取最新的id或者数据
- php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
- ubuntu下配置tftp服务器
- PHP之简单实现MVC框架
- 在PHP语言中使用JSON
- php脚本读写文件发送短信记录结果
- 为什么现在我最终推荐内存OLTP
- ajax异步请求php后台处理耗时任务session_write_close
- 支付宝PHP-RSA公钥和私钥的生成
- php验证码的制作
- levelDB
- php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
- PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
- 简单了解PHP编程中数组的指针的使用
- 深入解析PHP中foreach语句控制数组循环的用法
- 使用Huagepage和PGO来提升PHP7的执行性能
- PHP 实现异步数据调用