快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
载。尤其在基类CacheWriter是在另外 一个文件定义的时候。负载增加得稍微多一些。)

基类CacheWriter 调用了store() 方式函数来 引入文件处理资源和参数来进行存储。每一个实际的类都从执行store()函数, 但是不同的实例在store ()函数里面使用的运算法则是不一样的,以便不同的数据类型生成的$cached_content是不同的。每一个 运算法则被当作一个单独的类来运行。

前面的例子中的代码被替换为:

132

The Strategy Pattern
class VarCache {
// ...
function _getTemplate() {
$template = ‘<?php $cached_content =  ‘;
switch ($this->_type) {
case ‘string’:
$template  .= “‘%s’;”;
break;
}
// ...
}
function  set($value) {
$file_handle = fopen($this->_name.’.php’,  ‘w’);
switch ($this->_type) {
case ‘string’:
$content = sprintf($this->_getTemplate()
,str_replace (“‘“,”\\’”,$value));
break;
// ...
}
fwrite($file_handle, $content);
fclose($file_handle);
}
}

针 对每一个缓存的数据来型,你需要实例出相对应的_getTemplate() 和

set() 方式函数到相对应 的类当中。这里是StringCacheWriter:

class StringCacheWriter /* implements CacheWriter */ {
function store($file_handle, $string) {
$content = sprintf(
“<?php\n\$cached_content = ‘%s’;”
,str_replace(“‘“,”\\’”,$string));
fwrite($file_handle, $contents);
}
}

(因为PHP 4不支持接口的使用,这里接口 只是用注释来简单描述一下。)

这里我们得到另外一个运算法则存储“策略”。

class NumericCacheWriter /* implements CacheWriter */ {
function store($file_handle, $numeric) {
$content = sprintf(“<?php\n\$cached_content = %s;”
,(double)$numeric);
The Strategy Pattern 133
fwrite($file_handle, $content);
}
}
class SerializingCacheWriter /* implements CacheWriter */ {
function store($file_handle, $var) {
$content = sprintf(
“<?php\n\$cached_content = unserialize(stripslashes(‘%s’));”
,addslashes(serialize($var)));
fwrite($file_handle, $content);
}
}

通过把运算法则封装到交互的类中(同样的API,多形性), 你现在可以回过头来通过策略设计模式重新执行VarCache()类。这个时候经过条件分解但是与原来非常 类似的代码可以继续运行了。

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;
switch (strtolower($type)) {
case  ‘string’:    $strategy = ‘String’;     break; case  ‘numeric’:    $strategy = ‘Numeric’;    break; case  ‘serialize’:
default:    $strategy = ‘Serializing’;
}
$strategy .= ‘CacheWriter’;
$this->_type =& new  $strategy;
}
function isValid() {
return file_exists($this- >_name.’.php’);
}
function get() {
if ($this->isValid ()) {
include $this->_name.’.php’;
return $cached_content;
}
}
function set($value) {
$file_handle = fopen($this- >

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号