|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
掌握静态网页的制作技术是学习开发网站的先决条件,这一点就讲到这里,因为这篇文章不是教程文章,也就不对技术进行深入的刨析了。 <p>Singleton Pattern(中文称单例形式),可以说是最轻易了解的设计形式了,也充实表现了DRY
(Don't Repeat Yourself)的思惟。
单例形式的中心思惟是:包管一个对象存在且仅答应存在一个实例,并供应一个全局会见体例。
单例形式的运作模子是:当对象第一次被恳求时,创立这个对象的实例;以后的每次恳求,仅传递已创立实例的句柄。与单例形式绝对应的形式叫做Prototype(Java平台下)或叫SingleCall(.NET平台下),在此种形式下,每次恳求一个对象,都将新建一个实例。
在WEB法式中使用单例形式的一个典范例子是数据库毗连的创立:经由过程数据库句柄来毗连数据库这一行动是独有的。换言之,在一个句柄还没有封闭之前,你没法第二次创立一个不异称号的句柄。然后在平常编码中,假定你但愿在统一页面中操作由数据库传递回来的多组数据。此时假如采取传统的Prototype体例编程,为了法式的平安运转,你能够需求创立多个数据库链接句柄或反复停止翻开/封闭数据库毗连的操作。明显,如许的操作会招致法式过度损耗一些不用要的资本。
在此场景下,咱们可以应用单例形式来保护和同享统一个数据库句柄。长处有二:
1、进步了法式运转上的平安性。你不用过量的忧虑和思索诸如数据库翻开/封闭的成绩。
2、防止了因创立多个毗连招致的不用要资本华侈。渣滓收受接管机制仅需求对一个链接句柄停止操作。
固然,以上两个成绩关于PHP来讲并非成绩,PHP的渣滓收受接管机制就是:当一个页面履行终了会主动清空一切资本和内存,这外面就包含数据库毗连。
至此,可以总结出Singleton单例形式在WEB法式中的应用场所:
1、某些资本自己具有独有性,你不但愿在多个中央反复创立对这个独有资本对象的实例。
2、你需求在统一个对象的实例的多个援用之间同享这个对象的形态(上面我会将此条划定规矩停止代码举例)。
上面写一段小代码来演示PHP 5中Singleton的完成:
class Singleton
{
//此成员变量用来纪录此对象的援用次数
private $counter = 1;
//注重这里是private,即制止内部法式经由过程解析函数实例化对象
private function __construct()
{
}
//制止克隆这个对象
private function __clone()
{
}
//必需经由过程此办法失掉对象的援用
public static function getInstance()
{
static $instance = null;
if($instance == null)
{
$instance = new Singleton();
}
return $instance;
}
public function getUsedCount()
{
return $this->counter++;
}
}然后大吼:别人可以,我为什么就不可以?(是不是有点阎罗教练的味道,默默的确是电影看多了,抽嘴巴是会痛的,各位其实明白这个道理了就行了) |
|