单例模式使用小介绍

单例模式特点:

  1. 只能有一个实例。
  2. 必须自行创建这个实例。
  3. 必须给其他对象提供这一实例

单例模式应用场景

  1. 应用程序与数据库打交道的场景,在一个应用中会存在大量的数据库操作,针对数据库句柄连接数据库的行为,使用单例模式可以避免大量的new操作。因为每一次new操作都会消耗系统和内存的资源。
  2. WEB开发中的全局配置类文件等都可以使用单例模式。
  3. redis示例、memcached示例等等。类似的场景很多、一个系统只要是有且只需要一个实例的类都可以考虑此设计模式。
简而言之、一个站点有也只需要有一个实例对象的类都可以使用单例模式来设计。以下只是平时简单的单例写法示例。仅供参考!

简单的单例类的写法示例

<?php
/**
 *简而言之、一个站点有也只能有一个实例对象的类都可以使用单例模式来设计。以下只是平时简单的单例写法示例。仅供参考!
 */
class Conf {
    //为了保证该单一实例不被外部修改,使用private
    static private $_instance = null;

    private $_settings = [];

    //对外公开的获取单例示例的方法
    static function getInstance() {
        //首次反问时内部创建一个示例、并保存于静态变量中
        if (self::$_instance == null) {
            self::$_instance = new Conf();
        }
        //返回conf的实例
        return self::$_instance;
    }

    //为了避免外面用 new 和 clone来创建而外的实例。此处创建一个私有的 construct 和 clone
    private function __construct() {}
    private function __clone() {}

    //设置配置值
    function set($index, $value) {
        //此处还可以处理很多异常处理,这里不多说
        $this->_settings[$index] = $value;
    }

    //获取配置值
    function get($index) {
        //此处还可以处理很多异常处理,这里不多说
        return isset($this->_settings[$index]) ? $this->_settings[$index] : ‘‘;
    }
}
时间: 2024-07-28 19:38:54

单例模式使用小介绍的相关文章

angularJS之$watch的一个小介绍

现在最近公司项目使用angularJS进行开发:以前也接触过但是不多,趁着现在熟悉回来. 如题,angular中$watch也是我们在开发的时候需要的各种监听: $watch接收3个参数,第一个是对象,或者对象中某个属性,或者一个函数:第二个为回调方法[回调中有两个参数第一个为新值newVal,第二个为旧值oldVal],第三个为true/false默认为false,为true的时候对象中的某个属性值发生改变都会触发回调; 如以下代码: <section ng-controller="my

PHP设计模式之单例模式简单代码介绍

PHP设计模式之单例模式 单例模式是一种创建型模式,它会限制应用程序,使其只能创建某一特定类类型的一个单一的实例.举例来说,一个web站点将会需要一个数据库连接对象,但是应该有且只能有一个,因此我们通过使用单例模式来实现这种限制. 我们可以使用一个静态属性来保证对于一个特定的类来说只存在一个单一的实例. Class someclass{ Static private $_instance = NULL; } [示例]config类实现了单例模式,以便整个web应用程序可以使用同一个配置对象. <

maven 小介绍

Apache Maven 入门篇 ( 上 ): http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-1-406235-zhs.html Apache Maven 入门篇(下) http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-2-405568-zhs.html

关于 XML/EDI Web Service 小介绍

XML/EDI 系统的设计 总体框架 该 XML/EDI 系统分为四个层次: 第一层是提供 Web Service 的服务提供者,它包括服务提供者所能提供的所有服务(主要是与数据库之间的交互以及复杂功能的实现) 第二层是收集 Web Service 的服务代理,它主要收集所有的 Web Service 并对外发布,服务代理可以通过 Internet 或 Intranet 向服务中心发送远程调用信息,这些信息吧请求内容以 XML 数据格式表示且采用基于 HTTP 等通用 Internet 协议之上

AngularJS Directive - 开场小介绍(转)

Directive其实就是让html变得更强大的一种方法.它可以根据需求对dom变形,或注入行为. 觉得它很神秘么,其实一点儿也不神秘,只要开始使用AngularJS了,就一定在使用着Directive,比如我们在html上写的那些ng-controller,ng-model,ng-show等等都是AngularJS提供的Directive啊~ 那到底内部是怎么实现的呢?或者如果觉得AngularJS内置提供的Directive不给力咋办?现在咱们就自己做一个试试看吧~ 先来个比较简单的需求,假

小华的故事--单例模式

昨日,重新温习了一下工厂模式和单例模式. 并且重新认识了设计模式,在学校期间接触过设计模式. 但是,在那个时期,学设计模式只是单纯的学习理论知识而已. ps:顺便吐槽一下,上学期间学习的东西,大多数的情况会在未来的某个时间点完全遗忘掉. 最根本的原因在于,那个时期说学习的东西更偏重与理论,理论这种东西,只是潜移默化的告诉你“我知道这个”. 但是,当你真正开始用这个东西的时候发现无从下手.这也就造成了大学生找工作眼高手低的现象. (以上纯属个人观点) -----------------------

Java常见设计模式之单例模式

     1.何为单例模式? 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案.单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例.      2.单例模式的实现方式      一般来说单例设计模式有三个具体的实现方式,分别为懒汉模式,饥汉模式以及双重锁设计模式. 下面

爱上面试的凑弟弟--你再问我单例模式试试?

本系列博客以情景对话形式,用一个又一个的小故事或者编程实例来组织,对于实际开发尤其是面试中经常遇到的知识点进行深入探讨. 本书人物及背景:小豪: 23岁,武汉某双非本科不知名专业大学四年级学生,成绩一般,面临毕业,对后端开发.Java很感兴趣,正求职找工作.宇哥: 跟小豪通过租房认识,两人是室友,26岁,毕业后长期从事软件开发工作,是一个半吊子工程师,兴趣爱好是吹牛,不打草稿那种. 1.1 面试失败 小豪热爱编程,觉得写代码.做网站开发无敌酷炫雕炸天,在某站上看完了某马基础班和就业班的教学视频,

设计模式-单例模式(Go语言描述)

这篇博客我们继续来看设计模式,今天带来的是一个最简单而且最常用的模式-单例模式.那什么是单例模式呢?相信大家最它最熟悉不过了,那我们就来快速的了解一下它的定义. 保证一个类仅有一个实例,并提供一个访问它的全局访问点. 这个解释足够简单.说白了就是假如我们希望我们在我们的系统中该类仅仅存在1个或0个该类的实例.虽然单例模式很简单,但是熟悉java的同学可能了解,单例模式有很多写法,懒汉式.饿汉式.双重锁... 这么多形式,难道有什么目的?确实,不过他们的目的很明确,就是保证在一种特殊情况下的单例-