单例模式

单例模式

  1. 单例模式的简述:
    单例模式就是确保某个类只有一个实例,而且这个实例一般都是自行实例化,不需要再去new这个类,通过一个全局访问点去访问,一般常见的如类名。
  2. 为什么要使用单例模式:
    在开发过程中,经常会遇到一些对象,这样的对象在全局当中仅仅存在一个就可以了,如执行SQL语句时连接数据库的操作。如果这种对象出现过多的话,可能会出现各种意外错误。
  3. 单例类
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    class Football{
    private static $fb = null;
    /*
    * 构造方法私有化,不能让其他程序去new对象
    * 要想取得该对象,必须由该类提供方法
    * */
    final private function __construct(){
    }
    /*
    * 该方法必须是一个静态方法,只有通过类名才可以调用
    * 先去判断这个对象是否被创建
    * 如果没有则创建;如果存在则返回创建好的对象
    * 以保证该对象只有一个实例
    * */
    public static function getInstance(){
    if(static::$fb === null){
    static::$fb = new Football();
    }
    return static::$fb;
    }
    }

  4. 测试类
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
    require 'Football.class.php';
    header("Content-Type:text/html;charset=utf-8");
    //class test {
    // public function test(){
    // $fb1 = Football::getInstance();
    // $fb2 = Football::getInstance();
    // if ($fb1 === $fb2){
    // echo "fb1和fb2为同一个对象";
    // }
    // }
    //}
    $fb1 = Football::getInstance();
    $fb2 = Football::getInstance();
    /*
    * 去判断$fb1和$fb2是否为同一个实例
    * */
    if ($fb1 === $fb2){
    echo "fb1和fb2为同一个对象";
    }