• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php实现设计模式中的单例模式详解_PHP

php 搞代码 3年前 (2022-01-25) 12次浏览 已收录 0个评论

【概要】

保证一个类仅有一个实例,并且提供一个访问它的全局访问点【GOF95】

【特点】

1、一个类只有一个实例
2、它必须自行创建这个实例
3、必须自行向整个系统提供这个实例

【结构图】

【主要角色】

Singleton定义一个Instance操作,允许客户访问它的唯一实例。Instance是一个类方法。负责创建它的唯一的实例。

【优缺点】

1、对唯一实例的受控访问
2、缩小命名空间 单例模式是对全局变量的一种改进。它避免了那些存储唯一实例的全局变量污染命名空间
3、允许对操作和表示的精华 单例类可以有子类。而且用这个扩展类的实例来配置一个应用是很容易的。你可以用你所需要的类的实例在运行时刻配置应用。
4、允许可变数目的实例(多例模式)
5、比类操作更灵活

【适用性】

1、当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时
2、当这个唯一实例应该是通过子类化可扩展的。并且用户应该无需更改代码就能使用一个扩展的实例时。

【单例模式php实例】

<br /><?php<br /> /**<br /> * 单例模式<br /> * -------------<br /> * @author   zhaoxuejie <br /> * @package  design pattern <br /> * @version  v1.0 2011-12-14<br /> */<br />class Singleton {<br /> <br /> //私有静态成员变量,保存全局实例<br /> private static $instance = NULL;<br /> <br /> //私有构造方法,保证外界无法直接实例化<br /> private function __construct(){}<br /> <br /> //静态方法,返回此类唯一实例<br /> public static function getInstance(){<br />  if(!isset(self::$instance)<a style="color:transparent">、本文来源gao($daima.com搞@代@#码$网</a><big>搞gaodaima代码</big>){<br />   $c = __CLASS__;<br />   self::$instance = new $c;<br />  }<br />  return self::$instance;<br /> }<br /> <br /> //测试用方法<br /> public function info(){<br />  return 'ok';<br /> }<br /> <br /> //防止克隆<br /> public function __clone(){<br />  trigger_error('Clone is not allowed.', E_USER_ERROR);<br /> }<br />}

$s = Singleton::getInstance();
echo $s->info();
?>


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php实现设计模式中的单例模式详解_PHP

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址