php 简单的 单例模式

php单例模式简单说明

使用注意事项: 
    1.使用时不能用反射模式创建单例,否则会实例化一个新的对象 
    2.使用懒单例模式时注意线程安全问题 
    3.饿单例模式和懒单例模式构造方法都是私有的,因而是不能被继承的,有些单例模式可以被继承(如登记式模式) 
<?php
/**
 * Created by PhpStorm.
 * auther: sgj
 * Date: 2019/9/5
 * Time: 20:58
 */
/*
  1.单例模式只能通过自身进行实例化
  2.拥有一个保存对象实例的静态成员变量
  3.拥有一个访问这个实例的公共静态方法(常用getInstance()方法进行实例化单例类 )
  4.通过instanceof操作符可以检测到类是否已经实例化了
  */
class single
{
    /**
     * 私有构造函数
     * single constructor.
     */
    private function __construct()
    {

    }

    /**
     * 私有的构造函数防止克隆
     */
    private function __clone()
    {
        // TODO: Implement __clone() method.
    }

    /*存储实例的静态方法*/
    private static $interion;

    /**
     * 通过这个来获取实例
     * @return single
     */
    public function getInstance(){
        if (empty($interion)){
            self::$interion=new single();
        }
        return self::$interion;
    }

}
  1.单例模式只能通过自身进行实例化
  2.拥有一个保存对象实例的静态成员变量
  3.拥有一个访问这个实例的公共静态方法(常用getInstance()方法进行实例化单例类 )
  4.通过instanceof操作符可以检测到类是否已经实例化了

单例模式的优点: 

一个php进程只会实例化出一个单例 ,减少了内存占用减少资源占用。比如说你的调整了php的进程数,随着php进程数的增加需要注意到mysql连接数的数量。因为php mysql采用了单例模式,你的PHP进程数就是mysql的连接数。(此时也需要注意你的mysql连接数必须大于
你php的进程数,否则就等待mysql 释放连接 导致等待从而导致多米诺似的系统崩溃)

单例模式的缺点:

没有抽象层难以扩展 不适合变化性较强的实例单例类的职责过重,在一定程度上违背了“单一职责原则”。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值