PHP设计模式之单例模式

单例模式(Singleton Pattern)

单例模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

特点

  • 单例类只能有一个实例。
  • 单例类必须自己创建自己的唯一实例。
  • 单例类必须给所有其他对象提供这一实例。

三私一公

  1. 屏蔽外部直接实例化该类(private)
  2. 禁止克隆(private)
  3. 存放实例对象(private)
  4. 自己创建自己的唯一实例,供外部调用(public)

Test.php(测试类)

<?php
namespace core;

class Test
{
    private static $instance; // 存放实例对象
    // 屏蔽外部直接实例化该类
    private function __construct()
    {
    }
    // 禁止对象克隆
    private function __clone()
    {
    }
    // 获取实例
    public static function getInstance()
    {
        if (self::$instance) {
            echo "已存在实例<br>";
        } else {
            self::$instance = new self();
            echo "新实例化<br>";
        }
        return self::$instance;
    }

    public function test1()
    {
        echo "单例模式";
    }
}

Factory.php(工厂类)

<?php
namespace core;

class Factory
{
    // 实例化Test类
    static function createTest()
    {
        $test = Test::getInstance();
        return $test;
    }
}

index.php

<?php

define("BASEDIR", __DIR__);

require_once (BASEDIR . "/core/Loader.php");
spl_autoload_register('\\core\\Loader::autoload');

$test = \core\Factory::createTest();
$test = \core\Factory::createTest();
$test = \core\Factory::createTest();
$test = \core\Factory::createTest();
$test->test1();

结果


猜你喜欢

转载自blog.csdn.net/qq_36045946/article/details/80993620