设计模式 — 单例模式
1.单例模式的定义
确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
2.单例模式的使用场景
确保某个类只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象那个只应该有且只有一个,例如,创建一个对象需要消耗的资源过多,如果访问IO和数据库等资源时,我们可以考虑单例模式。
3.实现单例模式的主要关键点
3.1.构造函数不对外开放,一般为private。
3.2.通过一个静态方法或者枚举返回单例类对象。
3.3.确保单例类的对象有且只有一个,尤其是在多线程下。
3.4.确保单例类对象在反序列化时不会重新构建对象。
通过单例类的构造函数私有化,使得客户端代码不能通过new的形式手动构造单例类的对象,单例类会暴露一个公有静态方法。客户端需要调用这个静态方法获取到单例类的唯一对象,在获取这个单例对象的过程中需要确保线程安全,也就是说在多线程环境下构造单例类的对象也是有且只有一个。
4.单例模式的简单示例
4.1.饿汉式单例
但是在getInstance之前,如果必须调用某个方法来给它设置参数,这样的情况下这种单例就无法使用。
4.2.懒汉式单例
懒汉模式是声明一个静态对象,并且在用户第一次调用getSingle时进行初始化。
4.3.双重锁实现单例
双重锁实现单例模式的优点技能在需要时初始化单例又能够保证线程安全,且单例对象初始化后调用getSingle不能进行同步锁。
第一层主要是为了避免不必要的同步,第二层判断是为了在null情况下创建实例。双重锁的优点,资源利用率高,第一次执行getSingle是单例才会
4.4.静态内部类实现单例
当第一次加载Single类时并不会初始化single,只有在第一次调用Single的getSingle方法时才会导致single被初始化,因此第一次调用getSingle方法会导致虚拟机加载SingleHolder类,这种方式不仅能够确保线程安全也能够保证单例对象的唯一性,同时也延迟了单例的实例化。
4.5.枚举单实例
枚举在Java中与普通类时一样的,不仅能够有字段,还能够有自己的方法,最重要的是默认枚举实例的创建是线程安全的,并且在任何情况下他都是一个单例。
4.6.推荐使用
推荐使用双重检查锁单例,和静态内部类单例。请勿转载,携手千锋php。
转载于:https://my.oschina.net/u/3432750/blog/912951
分享到:
相关推荐
**PHP5设计模式 - 单例模式** 单例模式是一种常用的设计模式,它在软件工程中扮演着控制类实例化过程的角色,确保一个类只有一个实例,并提供全局访问点。这种模式在PHP中尤其常见,特别是在需要频繁实例化然后销毁...
单例模式是一种设计模式,它保证了一个类只有一个实例,并提供一个全局访问点。这种模式在 PHP 中尤其适用于控制共享资源,例如数据库连接、缓存服务或者配置对象,确保在整个应用程序中这些资源只被初始化一次。 ...
在PHP编程中,单例模式是一种非常常用的设计模式,它保证了一个类只有一个实例,并提供一个全局访问点。这种模式在管理共享资源、数据库连接、缓存处理等场景中尤其适用,因为它可以避免频繁创建和销毁对象带来的...
### PHP设计模式之单例模式详解 #### 一、引言 在软件工程领域,设计模式是一种被广泛接受的解决方案,用于解决特定类型的问题。PHP作为一种流行的服务器端脚本语言,同样可以从这些设计模式中受益。本文将详细介绍...
1)程序功能:单例模式设计Memcache和Redis操作类,采用PHP编写。 2)程序详解地址:http://blog.csdn.net/clevercode/article/details/46410055。 3)原创作品,出自"CleverCode的博客",分类为《设计模式之PHP项目...
PHP单例设计模式,连接多数据库源码 单例模式的三个特点 1: 一个类只能有一个实例 2: 它保修自行创建这个实例 3: 必须自行向整个系统提供这个实例. 单例模式中主要的角色 Singleton定义一个Instance操作,允许客户...
总的来说,单例模式是一种在PHP中非常实用的设计模式,尤其适用于需要全局共享和控制的对象,如数据库连接、缓存服务等。合理运用单例模式,可以提高代码的效率和质量,使程序更易于理解和维护。
PHP中的单例模式是一种非常重要的设计模式,其主要目的是限制类的实例化过程,确保一个类在整个程序中只有一个实例存在。这在处理全局资源,如数据库连接时尤其有用,因为它可以避免创建多个数据库连接,浪费系统...
本文实例分析了PHP设计模式之单例模式。分享给大家供大家参考,具体如下: 单例模式(Singleton Pattern 单件模式或单元素模式),是常见的一种设计模式,它有三个特点 1.只能有一个实例 2.必须自行创建这个实例...
单例模式是一种设计模式,它控制了类的实例化过程,确保一个类只有一个实例,并提供一个全局访问点。在PHP中,单例模式通常用于管理共享资源,如数据库连接、缓存系统或日志记录,因为这些场景下,创建多个实例可能...
单例模式是软件设计模式中的一种,其主要目的是确保一个类只有一个实例,并提供一个全局访问点,以便在程序的任何地方都可以方便地获取这个唯一实例。这种模式在PHP编程中非常常见,特别是在需要管理和共享资源时,...
单例模式是一种设计模式,它在软件工程中被广泛使用,尤其是在PHP编程中。单例模式的主要目的是控制类的实例化过程,确保在整个应用程序中,对于某个类,只存在一个单一的实例。这种模式在资源管理、全局配置或者...
在软件设计模式中,工厂模式和单例模式是两种非常基础且重要的模式,它们都是用于解决对象创建问题,但有着不同的设计理念和应用场景。本篇文章将深入探讨这两种模式,并结合具体的代码示例`myFactoryDemo`进行讲解...
单例模式是设计模式的一种,它的主要目标是确保一个类只有一个实例,并提供一个全局访问点。这在处理资源管理、数据库连接、缓存等场景时非常有用,因为它可以避免因为多次创建对象而消耗过多资源。 在这个例子中,...
其中,单例模式是一种非常基础且重要的设计模式,它的主要目标是确保一个类只有一个实例,并提供全局访问点。在PHP中,单例模式常用于控制共享资源的访问,如数据库连接、日志记录或者会话管理等。 单例模式的基本...
在PHP编程中,单例模式是一种常见的设计模式,它确保一个类只有一个实例,并提供一个全局访问点。在数据库操作中,特别是在MySQL交互时,使用单例模式可以有效地管理数据库连接,避免频繁创建和关闭连接,从而提高...
在 PHP 开发中,单例模式是一种常见的设计模式,它限制一个类只能有一个实例。这样的设计模式在管理共享资源、控制对象生命周期或者在整个应用中保持一致状态时非常有用。本文将深入解析 PHP 单例模式的原理,并通过...
单例模式的实现饿汉式懒汉式线程安全的懒汉式登记式单例模式的优缺点单例模式的优点单例模式的缺点 单例模式是23个模式中比较简单的模式,应用也非常广泛 什么是单例模式? 单例模式的定义: Ensure a class ...
《PHP设计模式》是一本探讨如何在PHP编程中应用设计模式的书籍。设计模式是软件工程领域中,解决常见问题的模板或策略。本书作者是美国的Aaron Saray,内容详尽地介绍了各种设计模式,旨在帮助PHP开发者构建出更加...