最新公告:最新上线Yii2实战教程,欢迎大家订阅

PHP设计模式-单例模式

0 1621

概要

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

特点

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设计模式-单例模式 版权归作者,免费文章欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

发表评论:

您必须 才能发表留言!

Yii2实战教程

一套真正的从入门到实践的教程,不说废话的讲解,实例操作,作者的亲自指导,有问题随时提问。现在购买即可获取全套完整教程

PHP学习网 – 公众账号

最新文章
免费证书Let’s Encrypt的申请和使用 192
mac下Homebrew的使用 338
mysql5.7.21导入5.6的数据报Error : Invalid default value for ‘comment_date’ 450
阿里云 lnmp一键安装包远程访问Mysql 852
php memcached扩展安装 694
vagrant package 打包命令的用法 720
Warning: require_once(): open_basedir restriction in effect 错误 960
yaf框架教程(6)- yaf路由配置 1050
vagrant问题汇总 1079
ubuntu系统两个PHP版本坑坏人 1055
随机文章
PHP面向对象:instanceof 运算符 1020
Yii::记录日志到自定义文件 777
yii 标签用法 735
Yii2中对Composer的使用 1972
PHP图像操作类 1452
php的URL重定向函数 1956
WAMP虚拟目录的设置 1080
yaf框架教程(3)- yaf框架环境配置 870
MySQL数据类型中DECIMAL的作用和用法 1315
vagrant package 打包命令的用法 720
切换注册

登录

切换登录

注册