PHP 单例模式设计

    技术2022-09-01  86

    单例模式(Singleton):通过代码实现单例的设计思路、一个类最多只能产生一个对象的设计思想。单例模式设计原则(三私一公):私有化构造方法、私有化克隆方法、私有化静态属性、公有静态方法

    1. 单例、单例模式


    单例:一个类最多只能有一个对象

    单例模式(Singleton):通过代码实现单例的设计思路、一个类最多只能产生一个对象的设计思想

    2. 三私一公


    a. 私有化构造方法

    对象的产生方式之一是通过实例化类,而在类外部实例化是一种不可控行为,所以应该禁止类在外部被实例化 类在外部实例化本质上是在类外部调用了构造方法, 私有化构造方法可使其不能在类外部掉用构造方法,也就是实现了禁止类在外部被实例化

    b. 公有静态方法

    私有化构造方法只是不能在类外部实例化类,但是可以在类里面实例化,没有对象,还想要访问类中的方法,所以需要定义一个公有静态方法,用于获取类的实例(对象)```

    c. 私有化静态属性

    提供公有静态方法后,无限调用静态方法依然可以得到多个对象。 要想只返回一个,则可将第一次产生的对象保存起来,以后如果要获取对象直接返回第一次产生的对象

    d. 私有化克隆方法

    在类外部可以通过克隆对象来产生新的对象,私有化克隆方法可实现禁止类在外部被克隆

    3. 单例模式设计类


    /** * 单例模式设计 */ class Singleton { /** * 私有静态属性 * 保存产生的对象 */ private static $obj; /** * 私有化构造方法 * 禁止类在外部实例化 */ private function __construct(){} /** * 类的入口 * 用于获取类的实例 */ public static function getInstance() { if (self::$obj instanceof self) { return self::$obj; } else { self::$obj = new self; return self::$obj; } } /** * 私有化克隆方法 * 禁止类在外部被克隆 */ private function __clone(){} }
    Processed: 0.010, SQL: 9