php设计模式2--单例模式

单例模式


单例模式简直就是无人不知,无人不晓,即使是一个刚刚入门不久的phper也听过其鼎鼎大名。那么其具体是做什么的我觉得也不用过多赘述。但具体我还是想说一下几点

  1. 单例模式让一个应用中只存在一个实例对象,减少了因多次new同一个对象而产生的内存消耗 。
  2. 其最经典的三私一共不多赘述,将在下面的代码中体现 。
  3. 这一点是我在其它文章中所看到的,单例模式被公认为是 反面模式,为了获得更好的可测试性和可维护性,请使用『依赖注入模式』。

代码详解


<?php
/**一个单例模式类**/
class Singleton
{
    
    /**私有的静态成员变量,用于调取实例**/
    private static $instance;

    
     /**通过懒加载获得实例(在第一次使用的时候创建)**/
    
    public static function getInstance()
    {
        if (null === static::$instance) {
            static::$instance = new static();
        }

        return static::$instance;
    }

    /**
    * 不允许从外部调用以防止创建多个实例
    * 要使用单例,必须通过 Singleton::getInstance() 方法获取实例
    */
    private function __construct()
    {
    }

    /**
    * 防止实例被克隆(这会创建实例的副本)
    */
    private function __clone()
    {
    }

    /**
    * 防止反序列化(这将创建它的副本)
    */
    private function __wakeup()
    {
    }
}


/**具体使用**/
$class1 = Singleton::getInstance();
$class2 = Singleton::getInstance();

/*
**打印两个类可以发现他们两个是同一个实例
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值