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

    据说,单例模式是设计模式中最简单的一种。

    不多说,先上代码,然后解说,一共两个文件:

    danli.class
        <?php
            class Danli
            {
                //保存类的实例的静态成员变量
                static private $_instance=null;
                //私有的构造方法
                private function __construct(){
                    echo "这是一个构造方法<br>";
                }
                //用于访问类的实例的公共的静态方法
                static public function getInstance(){
                    if(!(self::$_instance instanceof Danli)){
                        echo "实例化<br>";
                        self::$_instance = new self;
                    }
                    return self::$_instance;
                }
                //类的其它方法
                public function test(){
                    echo "调用成功<br>";
                }
            }
    index.php
        <?php
            //加载类文件
            require "Danli.php";
            //第一次调用类的实例
            $first = Danli::getInstance();
            $first->test();
            //第二次调用类的实例
            $second = Danli::getInstance();
            $second->test();
    输出结果:
            实例化
            这是一个构造方法
            调用成功
            调用成功

    以上是PHP单例模式的简单实现,通过结果可以看到Danli类只实例化了一次。

    接下来说一下单例模式。

    简单点儿说,单例模式就是让类的一个对象成为系统中的唯一实例,避免大量的 new 操作消耗的资源,也方便设置钩子输出日志信息等。
    关于单例模式在网上可以收到很多很详细的解说,这里不再复述,咱们还是详细说一下PHP的单例模式的实现。
    从上面的代码可以看出来,PHP的单例模式实现要求:
    1、一个private的__construct是必须的,单例类不能在其它类中实例化,只能被自身实例化;
    2、拥有一个保存类的实例的静态成员变量;
    3、一个静态的公共方法用于实例化这个类,并访问这个类的实例;

  • 相关阅读:
    边框上带有文字
    满屏展示
    javaScript中SetInterval与setTimeout区别
    圆形进度条
    抢购(秒杀)业务的技术要点
    Sybase 动态改变存储过程里查询的数据库
    在Hibernate映射文件里配置Sequence
    初学struts2杂乱笔记
    Struts2的学习链接
    DWR框架在web.xml的完整配置及注释
  • 原文地址:https://www.cnblogs.com/shangxia/p/6029728.html
Copyright © 2011-2022 走看看