PHP设计模式-单例模式

精选文章 2014年8月20日 4.72K

概要

创建型模式
保证一个类仅有一个实例,并且提供一个访问它的全局访问点

特点

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

结构图

Singleton

主要角色

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

优缺点

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

适用性

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

单例模式php实例

<?php
         /**
         * 单例模式
         * ————-
         * @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(){
                throw new Exception(‘Error: Clone is not allowed.’);
            }
        }
        $s = Singleton::getInstance();
        echo $s->info();
 ?>

 

 


关注微信公众号『PHP学习网

第一时间了解最新网络动态
关注博主不迷路~

版权声明:转载请注明 PHP学习网 » PHP设计模式-单例模式
分享到:
赞(0)

文章评论

您需要之后才可以评论
0点赞 0评论 收藏 QQ分享 微博分享

PHP学习网

PHP学习网