zoukankan      html  css  js  c++  java
  • PHP单例模式

    PHP单例模式,就是一个对象只被生成一次,但该对象可以被其它众多对象使用。单例模式使用最多的场景,是数据库连接操作。我们知道,生成一个对象的操作是用new函数来实现,但是new对象都会消耗内存,而且有时候对同一个对象,在不同文件中可能会生成多次,这就造成了系统资源的浪费。然而使用单例模式,则可以很好的避免这种情况。

    以数据库为例,假设我们有一个数据库的类,要实现数据库连接。如果不使用单例模式,那么在很多PHP文件中,我们可能到要创建这样的一个连接,这其实是对资源的很大浪费。那么下面介绍单例模式实现方法:

    <?php
    
    class Database
    {
        protected static $db;
        private function __construct()
        {
    
        }
        static public function getInstace(){
            if(self::$db){
                return self::$db;
            }else{
                self::$db = new self();
                return self::$db;
            }
        }
    }
    //错误调用方法
    //用new实例化private标记构造函数的类会报错
    $db = new Database();
    
    //正确获取实例方法
    $db = Database::getInstace();

    使用单例模式的好处是,当你在其他地方也要使用到这个类,比如上面的数据库类。那么你可以在其它地方直接调用 Database::getInstace(),而且该实例只会被生成一次,不会被重复生成,所以不会浪费系统资源。

    简单的说,单例模式生成的实例只被生成一次,而且只负责一个特定的任务。

    使用单例模式有下面几个要求:

    1.构造函数需要标记为private(访问控制:防止外部代码使用new操作符创建对象),单例类不能在其他类中实例化,只能被其自身实例化;

    2.拥有一个保存类的实例的静态成员变量;

    3.拥有一个访问这个实例的公共的静态方法(常用getInstance()方法进行实例化单例类,通过instanceof操作符可以检测到类是否已经被实例化);

    4.如果严谨的话,还需要创建__clone()方法防止对象被复制(克隆)。(我上面没创建)

  • 相关阅读:
    Android比较实用的属性
    软件版本命名规则
    Dhroid框架笔记(DhNet、Adapter)
    Activity对话框
    Dhroid框架笔记(IOC、EventBus)
    Eclipse快捷键
    解析Excel_Jxl
    面试题
    java基础——值传递和应用传递
    java基础——子类继承父类程序执行顺序
  • 原文地址:https://www.cnblogs.com/zhouguowei/p/9262478.html
Copyright © 2011-2022 走看看