美文网首页
设计模式之单例模式

设计模式之单例模式

作者: imjcw | 来源:发表于2019-02-27 15:02 被阅读0次

前言

之前做了工厂模式的笔记,这里继续做一下单例模式的笔记。

关于单例模式,网上有不少版本,大多雷同。

个人觉得,这个设计模式,我们只需要了解其实现原理和其作用即可,毕竟其作用还是可以通过其它方式来代替的,比如依赖注入管理器。

概念

保证某一个类创建之后,之后所有的流程中,这个类不会再次创建。保证其在整个流程中的唯一性。

示例

主要要注意几点。

1、必须有一个存储类实例化后的静态变量
2、必须提供一个静态的实例化方法
3、建议将构造方法 __construct 设置为私有
4、建议将魔术方法 __clone 设置为私有

之后的两个建议,是网上各个版本的不同之处,其实只要用的规范,后面两点可以不做。

下面的例子写的是没有参数的版本,如果有参数,请酌情添加。

<?php
class Demo
{
    /**
     * 存储实例化类的静态常量
     * 
     * @var Demo
     */
    protected static $instance;

    /**
     * 提供外部调用的静态方法
     * 
     * @return Demo
     */
    public static function getInstance()
    {
        if (!self::$instance) {
            self::$instance = (new self());
        }
        return self::$instance;
    }

    /**
     * 私有化构造函数
     */
    private function __construct()
    {
        # code...
    }

    /**
     * 私有化克隆函数
     */
    private function __clone()
    {
        # code...
    }
}

Demo::getInstance();

最后

单例模式是所有模式中最容易理解,也是在项目中运用比较多的设计模式。

相关文章

网友评论

      本文标题:设计模式之单例模式

      本文链接:https://www.haomeiwen.com/subject/vvhfuqtx.html