您的位置:首页 > 编程语言 > PHP开发

单例模式

2016-06-21 10:39 501 查看
浅谈单例模式

参考百度经验

单例模式顾名思义,就是对于指定的类只有一个实例,这样可以节省系统资源,也省去过多的实例化导致对象版本太多,不易管理。

1。首先需要保证该类不可以通过new来实例化。因为如果可以这样,那么就无法保证单例了。只需要把构造方法设置为private或者protected即可。

2。既然外部无法访问构造方法,那么也就无法实例化,就保证只能内部实例化,返回对象,那么就需要一个静态方法来,实例化该类本身并且返回该对象。

3.那么多次访问静态方法,不是也会创建不同的对象吗?这时候我们就需要一个静态属性来记录,如果该类已经被实例化过,就直接返回对象即可。

4.然后需要用final关键字防止该静态方法被继承,用__clone魔术方法防止该对象被克隆即可。

<?php
class single{
static public $object = null;
protected function __construct(){
}
final static function NewOb(){
if (self::$object instanceof self) {
return self::$object;
}
self::$object = new self();
return self::$object;
}
public function __clone(){
echo "想克隆没门<br />";
}
}
$t1 = single::NewOb();
$t2 = single::NewOb();
$t3 = clone $t2;
if ($t1 === $t2) {
echo '是一个对象<br />';
}else {
echo '不是一个对象<br />';
}
if ($t3 === $t2) {
echo '是一个对象<br />';
}else {
echo '不是一个对象<br />';
}
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息