找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 112|回复: 0
打印 上一主题 下一主题

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

[复制链接]

2647

主题

2647

帖子

7881

积分

论坛元老

Rank: 8Rank: 8

积分
7881
跳转到指定楼层
楼主
发表于 2018-2-14 05:54:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            【概要】
保证一个类仅有一个实例,并且提供一个访问它的全局访问点【GOF95】
【特点】
1、一个类只有一个实例
2、它必须自行创建这个实例
3、必须自行向整个系统提供这个实例
【结构图】



【主要角色】
Singleton定义一个Instance操作,允许客户访问它的唯一实例。Instance是一个类方法。负责创建它的唯一的实例。
【优缺点】
1、对唯一实例的受控访问
2、缩小命名空间 单例模式是对全局变量的一种改进。它避免了那些存储唯一实例的全局变量污染命名空间
3、允许对操作和表示的精华 单例类可以有子类。而且用这个扩展类的实例来配置一个应用是很容易的。你可以用你所需要的类的实例在运行时刻配置应用。
4、允许可变数目的实例(多例模式)
5、比类操作更灵活
【适用性】
1、当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时
2、当这个唯一实例应该是通过子类化可扩展的。并且用户应该无需更改代码就能使用一个扩展的实例时。
【单例模式php实例】
[U]复制代码[/U] 代码如下:
* @package  design pattern
* @version  v1.0 2011-12-14
*/
class Singleton {

//私有静态成员变量,保存全局实例
private static $instance = NULL;

//私有构造方法,保证外界无法直接实例化
private function __construct(){}

//静态方法,返回此类唯一实例
public static function getInstance(){
  if(!isset(self:instance)){
   $c = __CLASS__;
   self:instance = new $c;
  }
  return self:instance;
}

//测试用方法
public function info(){
  return 'ok';
}

//防止克隆
public function __clone(){
  trigger_error('Clone is not allowed.', E_USER_ERROR);
}
}
$s = Singleton::getInstance();
echo $s->info();
?>
            
            
您可能感兴趣的文章:
  • php 设计模式之 单例模式
  • php设计模式 Singleton(单例模式)
  • PHP最常用的2种设计模式工厂模式和单例模式介绍
  • 基于php设计模式中单例模式的应用分析
  • php设计模式之单例模式使用示例
  • php单态设计模式(单例模式)实例
  • php设计模式之单例模式实例分析
  • 学习php设计模式 php实现单例模式(singleton)
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端