博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP设计模式(四)单例模式(Singleton)
阅读量:6044 次
发布时间:2019-06-20

本文共 1264 字,大约阅读时间需要 4 分钟。

一、什么是单例设计模式

单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。

二、单例模式的技巧

  1. 利用$_instance私有变量来保存类的唯一实例化对象;
  2. 设计一个getInstance对外公开的函数,可以获取类唯一实例;
  3. 防止用户用new实例化,和克隆,构造两个__construct、__clone私有函数;

三、单例模式的应用场景

  数据库设计,我们发送一次请求,可能会需要访问不同的表,那么如果每次访问都 new 一个实例,那必然会造成资源的浪费,所以使用单例模式,可以很好的节省资源。

单例类
class DataBase{    /**     * 静态成品变量,保存全局实例     */    private static $_instance = null;    /**     *  测试变量,存储日志信息     */    private static $_msg = null;    /**     * 私有构造方法,防止外界实例化对象     */    private function __construct()    {        $connect = "连接数据库操作";    }    /**     * 私有化克隆方法,防止外键克隆对象     */    private function __clone()    {    }    /**     * 静态方法,外界获取实例的唯一接口     * @return Object 返回对象唯一实例     */    public static function getInstance()    {        if (!self::$_instance){            self::$_instance = new DataBase();            self::$_msg = "这是一个新对象" . "
"; }else{ self::$_msg = "这个是一个旧的对象" . "
"; } return self::$_instance; } public function log() { echo self::$_msg; }}
客户端测试代码
$dbA = DataBase::getInstance();    $dbA->log();    $dbB = DataBase::getInstance();    $dbB->log();    $dbC = DataBase::getInstance();    $dbC->log();
输出结果:

这是一个新对象

这个是一个旧的对象

这个是一个旧的对象

“对象”?,程序员怎么可能有对象!~

参考

系列源地址

WilburXu/design_pattern

系列目录

转载地址:http://ucfex.baihongyu.com/

你可能感兴趣的文章
Target runtime Apache Tomcat is not defined.错误解决方法
查看>>
VC++ 监视文件(夹)
查看>>
【转】keyCode对照表及JS监听组合按键
查看>>
[Java开发之路](14)反射机制
查看>>
mac gentoo-prefix安装git svn
查看>>
浅尝异步IO
查看>>
C - Train Problem II——(HDU 1023 Catalan 数)
查看>>
Speak loudly
查看>>
iOS-在项目中引入RSA算法
查看>>
[译] 听说你想学 React.js ?
查看>>
gulp压缩合并js与css
查看>>
块级、内联、内联块级
查看>>
Predicate
查看>>
[面试题记录01]实现一个function sum达到一下目的
查看>>
这个季节的忧伤,点到为止
查看>>
mysql通过配置文件进行优化
查看>>
省级网站群建设关注点
查看>>
工作第四天之采集资源
查看>>
innobackupex 在增量的基础上增量备份
查看>>
Windows Server 2012 R2 DirectAccess功能测试(2)App1服务器安装及配置
查看>>