快速业务通道

php设计模式介绍之注册模式

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

assertFalse()仅仅是assertTrue()的反面,如果第一个参数预期是PHP中的布尔 值false,测试通过。

通过基于测试驱动的开发方式,你可以编写尽可能少的代码来符合你现阶 段的测试需求,你也可以增加测试——如果你还未满足这个类的需求。

以下为满足前 述测试要求的最简单的代码:

代码:

class ReGIStry
{function isValid() {return false;}
function get() {}
function &getInstance()
{static $instance = array();
if (!$instance) $instance[0] =& new Registry;
return $instance[0];
}
}

确实,isValid() 和 get()方法的代码片断并不是非常好 ,但是所有的测试通过了!下面我们添加更丰富的测试用例。

代码:

class RegistryPHP4TestCase extends UnitTestCase
{function testRegistryIsSingleton() { /*...*/ }
function testEmptyRegistryKeyIsInvalid() { /*...*/ }
function testEmptyRegistryKeyReturnsNull() { /*...*/ }
function testSetRegistryKeyBecomesValid ()
{$reg =& Registry::getInstance();
$test_value = ''something'';$reg- >set(''key'', $test_value);
$this->assertTrue($reg->isValid (''key''));
}
}

为了满足testSetRegistryKeyBecomesValid()方法, “注册模式”类必须要有追踪(tracking)的功能——如果特定的属性用set()方 法设置了。 很明显的一种实现方式是利用PHP4中的联合数组作为实例变量,并利用PHP的 array_key_exists()函数来检测我们想要的索引是否被创建了。

下面是“注册模式类 ”更进一步的实现。

代码:

class Registry {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号

store = array();
function isValid($key)
{return array_key_exists($key, $this->_store);}
function set($key, $obj)
{$this->_store[$key] = $obj;}
function get() {}
function &getInstance()
{static $instance = array();
if (!$instance) $instance[0] =& new Registry;
return $instance[0];
}
}

通过 在声明时初始化 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号

store变量,就没有设置构造函数的必要了。(注:在PHP4中没有适当的访问控制标记 ,以下代码遵循私有变量以下划线作前缀的约定)

测试又通过了!现在我们想最终特性进发:给 定一个属性key,注册模式类的get()方法将返回一个对特定对象的引用。一下为符合这一要求的测试用 例。

代码:

class ReGIStryPHP4TestCase extends UnitTestCase
{function testRegistryIsSingleton() { /*...*/ }
function testEmptyRegistryKeyIsInvalid() { /*...*/ }
function testEmptyRegistryKeyReturnsNull() { /*...*/ }
function testSetRegistryKeyBecomesValid() { /*...*/ }
function testSetRegistryValueIsReference()
{$reg =& Registry::getInstance();$test_value =  ''something'';
$reg->set(''key'', $test_value);
$this- >assertReference($test_value, $reg->get(''key''));
//another way to test the reference
$test_value .= '' else'';
$this->assertEquual (''something else'',$reg->get(''key''));
}
}

以下为注 册模式类的完整实现代码。

代码:

class Registry
{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号

store = array ();
function isValid($key)
{return array_key_exists($key, $this->_store);}
function &get($key)
{if (array_key_exists($key, $this->_store))
return $this->_store[$key];}
function set($key, &$obj)
{$this->_store[$key] =& $obj;}
function &getInstance()
{static $instance = array();
if (!$instance) $instance[0] =& new Registry;
return $instance[0];
}
}

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