美文网首页技术类
php设计模式之单例模式

php设计模式之单例模式

作者: 小山人 | 来源:发表于2018-06-21 11:39 被阅读0次

单例模式

単例模式就是某个类只有一个实例,自行实例化并向整个系统提供这个实例

単例模式的实现:
1:私有化一个属性用于存放唯一的实例
2:私有化构造方法
3:私有化克隆方法,用来创建并只允许创建一个实例
4:公有化静态方法,用于向系统提供这个唯一实例
<?php
class Singleton {
    //1.私有化属性存放实例
    private static $_instance = null;

    //2.私有化构造方法
    private function __construct() {

    }

    //3.克隆方法私有化
    private function __clone() {
        // TODO: Implement __clone() method.
    }

    //4.公有化静态方法,用于向系统提供这个唯一实例
    public function getInstance() {
        //如果不是当前类的实例,那么实例化当前类创建新实例
        if(!self::$_instance instanceof self){
            self::$_instance = new self();
        }
        return self::$_instance;
    }
}

$obj1 = Singleton::getInstance();
$obj2 = Singleton::getInstance();
$obj3 = Singleton::getInstance();

var_dump($obj1,$obj2,$obj3);
#输出
object(Singleton)#1 (0) {
}
object(Singleton)#1 (0) {
}
object(Singleton)#1 (0) {
}

因为静态方法可以在全局范围内被访问,当我们需要一个单例模式的对象时,只需调用getInstance方法,获取先前实例化的对象,无需重新实例化。

因为静态方法可以在全局范围内被访问,当我们需要一个单例模式的对象时,只需调用getInstance方法,获取先前实例化的对象,无需重新实例化。

优点: 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。 2、避免对资源的多重占用(比如写文件操作)。

缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。

使用场景: 1、要求生产唯一序列号。 2、WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。 3、创建的一个对象需要消耗的资源过多,比如 I/O 与数据库的连接等。

注意事项:getInstance() 方法中需要使用同步锁 synchronized 防止多线程同时进入造成 instance 被多次实例化

上一篇 php设计模式之工厂模式
下一篇 php设计模式之注册树模式

相关文章

  • 2018-04-08php实战设计模式

    一、单例模式 单例模式是最经典的设计模式之一,到底什么是单例?单例模式适用场景是什么?单例模式如何设计?php中单...

  • 单例模式

    JAVA设计模式之单例模式 十种常用的设计模式 概念: java中单例模式是一种常见的设计模式,单例模式的写法...

  • JAVA设计模式之单例模式

    JAVA设计模式之单例模式

  • Android 设计模式之简单工厂模式

    设计模式系列文章 Android 设计模式之单例模式 Android 设计模式之Builder模式 Android...

  • php 工厂模式

    承接上篇php模式设计之 单例模式,(虽然好像关系不大)。今天讲述第二种基础的模式设计——工厂模式。 那么何为工厂...

  • 设计模式之单例模式详解

    设计模式之单例模式详解 单例模式写法大全,也许有你不知道的写法 导航 引言 什么是单例? 单例模式作用 单例模式的...

  • iOS模式设计之--创建型:1、单例模式

    iOS模式设计之--1、单例模式

  • ThinkPHP设计模式与Trait技术

    阅读原文 设计模式 单例模式 工厂模式 对象注册树 示例 运行 Trait技术 自 PHP 5.4.0 起,PHP...

  • 单例模式Java篇

    单例设计模式- 饿汉式 单例设计模式 - 懒汉式 单例设计模式 - 懒汉式 - 多线程并发 单例设计模式 - 懒汉...

  • 设计模式学习之单例模式

    设计模式之单例模式 1 什么是单例模式 在维基百科中单例模式定义为 单例模式,也叫单子模式,是一种常用的软件设计模...

网友评论

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

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