专栏首页仙士可博客php设计模式-单例模式

php设计模式-单例模式

单例模式(Singleton Pattern 单件模式或单元素模式)

单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

单例模式是一种常见的设计模式,在计算机系统中,线程池、缓存、日志对象、对话框、打印机、数据库操作、显卡的驱动程序常被设计成单例。

单例模式分3种:懒汉式单例、饿汉式单例、登记式单例。

单例模式有以下3个特点:

1.只能有一个实例。

2.必须自行创建这个实例。

3.必须给其他对象提供这一实例。

单例模式创建步骤

一:首先需要一个保存类的唯一实例的静态成员变量:

private static $_instance;

二:构造函数和克隆函数设置为私有,防止外部程序new类失去单例模式的意义(如果保证代码不new的话,可以忽略该步骤)

private function __construct()   
{   
}   
private function __clone()  
{  
}

三:提供一个访问该实例的静态方法,从而返回唯一实例的一个引用

public static function getInstance()    
{    
    if(! (self::$_instance instanceof self) )   
    {    
        self::$_instance = new static(); //new static和new self区别可查看http://www.jb51.net/article/54167.htm
    }  
    return self::$_instance;    
}

使用示例:

class test{

private static $_instance;  

private function __construct()   
{   
}   

private function __clone()  
{  
}

public static function getInstance()    
{    
    if(! (self::$_instance instanceof self) )   
    {    
        self::$_instance = new static(); //new static和new self区别可查看http://www.jb51.net/article/54167.htm
    }  
    return self::$_instance;    
}

public function test(){
    echo 1;
}

}

test::getInstance()->test();

这样就实现了一个单例模式啦

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 关于在windows上进行swoole开发的软件使用

    转眼就是2019年了,又好久没更新博客了,今天带来我在windows下写swoole代码(买不起mac的仙士可)

    仙士可
  • php实现tcp服务器

    经过了一个半月的研究,终于将php多进程,和tcp方面研究通了,这篇文章主要讲解一下我了解到的知识点

    仙士可
  • 关于js数组循环输出的几个方法以及关于下标不固定循环输出控制的方法

    这样子的话,当第一次执行时,i为1,这样就不会输出,而第一次过后,i会+1,i=2,这样的话就开始输出了,脑子真笨!

    仙士可
  • 一起来学GOF23种设计模式

    从今天开始,资源君带大家来学习Java中的23种设计模式。首先我给大家简单介绍一下这23种设计模式:

    Python进击者
  • WPF 使用封装的 SharpDx 控件

    上一篇告诉大家如何在 WPF 使用 SharpDx ,看起来代码比较复杂,所以本文告诉大家如何使用我封装的控件。

    林德熙
  • 使用thymeleaf生成mybatis模板

    我们在使用mybatis做数据库访问的时候,有很多重复的东西要写,如DAO里面的增删改查,mapper/provider里面的各种东东,还有实体类,其实这些都是...

    微笑的小小刀
  • 从一个网工的独白说开去

    独白 曾看到一位网络工程师给自己这样的独白:“我给自己的Title写的是网络大夫,因为感觉做网络的很像医生,只有网络有故障的时候才会想到网络工程师是多么重要,能...

    SDNLAB
  • Spark源码之Standalone模式下master持久化引擎讲解

    Spark源码之Standalone模式下master持久化引擎讲解 Standalone 模式下Master为了保证故障恢复,会持久化一些重要的数据,来避免m...

    Spark学习技巧
  • 如何隐藏tableHeaderView或tableFooterView

    在项目中,因为同一页面结构体不同,头部是相同的结构,用了两个不同的tableView,头部是统一的view,但是发现tableView.tableHeaderV...

    honey缘木鱼
  • 搭载麒麟 970的华为 Mate 10,带给我们多少人工智能方面的惊喜?

    AI科技评论消息,北京时间10月16日,华为 Mate 10 在德国慕尼黑发布。作为华为2017年的旗舰系列,其中,Mate 10 4GB+64GB 的售价为 ...

    AI科技评论

扫码关注云+社区

领取腾讯云代金券