page contents

php 简单的 单例模式

以下内容希望帮助到大家!

attachments-2020-03-q0Gee6aB5e72d0bf05eef.jpg

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 释放连接 导致等待从而导致多米诺似的系统崩溃)

单例模式的缺点:

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


attachments-2020-03-xvRfDa5Q5e72d16e3a6e7.jpg

  • 发表于 2020-03-19 09:55
  • 阅读 ( 594 )
  • 分类:PHP开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1135 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1470 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章