快速业务通道

php设计模式介绍之策略模式

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
etTemplate()
,str_replace(“‘“,”\\’”,$value));
break;
case  ‘numeric’:
$content = sprintf($this->_getTemplate()
,(float) $value);
break;
default:
trigger_error(‘invalid cache  type’);
}
fwrite($file_handle, $content);
fclose($file_handle);
}
}

130

The Strategy Pattern

现在,构造函数增加了第二个可选 的参数用来确定第一个参数的数据类型是数字类型还是字符串。这个类的最终形式变为请看下面代码, 包括了一个‘serialize’ 用来存储数据、对象等复杂数据的存储类型。

class VarCache {
var  php设计模式介绍之策略模式 - 凌众科技

快速业务通道

php设计模式介绍之策略模式

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
content

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号

name;
var  php设计模式介绍之策略模式 - 凌众科技
快速业务通道

php设计模式介绍之策略模式

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
content

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号

type;
function  VarCache($name, $type=’serialize’) {
$this->_name =  ‘cache/’.$name;
$this->_type = $type;
}
function isValid()  {
return file_exists($this->_name.’.PHP’);
}
function  get() {
if ($this->isValid()) {
include $this- >_name.’.php’;
return $cached_content;
}
}
function  _getTemplate() {
$template = ‘<?php $cached_content = ‘;
switch ($this->_type) {
case ‘string’:
$template .=  “‘%s’;”;
break;
case ‘serialize’:
$template .= “unserialize(stripslashes(‘%s’));”;
break;
case ‘numeric’:
$template .= ‘%s;’;
break;
default:
trigger_error(‘invalid cache type’);
}
return  $template;
}
function set($value) {
$file_handle = fopen($this- >_name.’.php’, ‘w’);
switch ($this->_type) {
case ‘string’:
$content = sprintf($this->_getTemplate()
,str_replace(“‘“,”\\’”,$value));
break;
case  ‘serialize’:
$content = sprintf($this->_getTemplate()
,addslashes(serialize($value)));
break;
case ‘numeric’:
$content = sprintf($this->_getTemplate()
,(float)$value);
break;
default:
trigger_error(‘invalid cache type’);
}
fwrite ($file_handle, $content);
The Strategy Pattern    131
fclose ($file_handle);
}
}

请注意_getTemplate()和set() 函数中的case判断语句 。它们都是基于同一个 php设计模式介绍之策略模式 - 凌众科技

快速业务通道

php设计模式介绍之策略模式

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
content

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号

type 实例参数的。get() 函数中却没有受到 php设计模式介绍之策略模式 - 凌众科技
快速业务通道

php设计模式介绍之策略模式

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
content

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号

type的影响,所以看起来因为存 储的数据类型的变化只影响到数据的存储过程。同时,多重的case条件判断也是一个提示,这个地方如 果使用了策略的设计模式会更好。

样本代码

从一个多重的switch 条件判断改变到策略模 式是一个条件分解实例的经典例子。整个测试的环境没有变化;只是VarCache类的内部改变了。

首先我们把你想要封装在一个独立的类的各种情况分隔出来。就前面的例子来说,你有三种变化的情况 需要进行考虑:‘string’, ‘numeric’, 和第三个‘serialize’。 前面的例子中还在对象实例化的时候选择了数据输出的格式。基于这个运算法则,你需要创建一个API来 封装它。

你可以用以下的代码开始:

class CacheWriter {
function  store($file_handle, $var) {
die(‘abstract class-implement in concrete  CacheWriter’);
}
}

这个就是PHP4版本的接口。(你可以从这个类进行 继承来保证你使用的是子类,这样做的话只是增加了一些系统的负

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号