php 单例模式的实现

<?php

class Single
{
    private static $_instance = null;

    private function __construct()
    {
    }

    private function __clone()
    {
        // TODO: Implement __clone() method.
    }

    public static function getInstance()
    {
        if (!(self::$_instance instanceof self)) {   // 使用instanceof 判断 $_instance 是否为Single类的实例
            self::$_instance = new self();           // 如果$_instance 不是Single类的实例 就将其实例
        }
        return self::$_instance;
    }
}

$test = Single::getInstance();
  • 首先需要把 构造函数和克隆魔术方法都设置成是私有的 防止类被实例
  • 提供静态公共方法 getInstance() 来实例类
  • 为什么使用静态方法来实例
    • 静态的方法在整个应用程序其间存储在内存中,速度快,但占用内存.
    • 动态的方法在先声明类实例才能调用类中的方法
    • 一般使用频繁的方法用静态方法,用的少的方法用动态的。静态的速度快,占内存。动态的速度相对慢些,但调用完后,立即释放类,可以节省内存,可以根据自己 的需要选择是用动态方法还是静态方法
    • 静态方法主要的问题就是数据同步的问题。如果你的静态方法的类中不保存私有变量那么什么问题都不会有的。最好是包要操作的数据全部以参数的方式传到方法中去
    • 静态方法是类方法,调用时不需要创建类实例
    • 静态方法是静态绑定到子类,不是被继承
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值