单例模式:概述

单例

  所谓单例模式,即是确保某一个类在整个系统中,只有一个实例。这是一种非常简单的设计模式,但是应用场景非常广泛,其优点非常明显,能够极大的减少系统对于同一个对象的创建和销毁,从而减少内存的开销。但是一定意义上来说,单例模式与我们熟知的单一职责原则有所冲突。

实现单例的方法

  要了解如何保证一个类始终只有一个实例,首先需要知道,一个类是怎么创建实例的:

  

  以上文章,总结了4种在Java中创建对象的方法,其中构造器是最常用的方法,而 Object 的 clone() 方法,其设计的意义与单例完全背道而驰,可以这么理解:如果一个类实现了 Cloneable 接口,那么设计者本身就不希望这个类是一个单例,所以就不做考虑了。另外一方面,在设计单例类时,要考虑到多线程并发访问的情况。

  我总结了5种实现单例模式的方法:

  • 饿汉模式
  • 懒汉模式
  • 静态内部类模式
  • 单元素枚举类模式
  • 登记模式

  以上5种方式,其各自的优劣,会在之后一一说明,欢迎补充和指正。

时间: 2024-10-11 10:43:45

单例模式:概述的相关文章

彻头彻尾理解单例模式与多线程

摘要: 本文首先概述了单例模式产生动机,揭示了单例模式的本质和应用场景.紧接着,我们给出了单例模式在单线程环境下的两种经典实现:饿汉式 和 懒汉式,但是饿汉式是线程安全的,而懒汉式是非线程安全的.在多线程环境下,我们特别介绍了五种方式来在多线程环境下创建线程安全的单例,使用 synchronized方法.synchronized块.静态内部类.双重检查模式 和 ThreadLocal 实现懒汉式单例,并总结出实现效率高且线程安全的单例所需要注意的事项. 版权声明: 本文原创作者:书呆子Rico

Java 设计模式:单例模式

单例模式概述 单例模式,在整个应用中单例类只能有一个实例,而且单例类负责创建此唯一实例. 单例模式又可分为饿汉式单例和懒汉式单例 饿汉式单例 饿汉式单例是指单例类在加载的时候实例已经创建好,不管此实例会不会使用都会创建. 代码示例如下 class Singleton { private static final Singleton instance = new Singleton(); private Singleton() { } public static Singleton getInst

(转)设计模式之——单例模式(Singleton)的常见应用场景

单例模式(Singleton)也叫单态模式,是设计模式中最为简单的一种模式,甚至有些模式大师都不称其为模式,称其为一种实现技巧,因为设计模式讲究对象之间的关系的抽象,而单例模式只有自己一个对象,也因此有些设计大师并把把其称为设计模式之一. 这里又不具体讲如何实现单例模式和介绍其原理(因为这方便的已经有太多的好文章介绍了),如果对单例模式不了解的可以先看下:http://terrylee.cnblogs.com/archive/2005/12/09/293509.html .当然也可以自己搜索.

Javascript面向对象之三单例模式-《javascript设计模式》笔记

1.单例模式概述源自百度百科对于单例模式的定义:单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 在javascript的世界里,其实没有严格的对象和类定义,“一切皆对象”使得javascript中都是对象,不能像java,c++或者php使用特定的方法返回一个实例来实现,因此对javascript来说,我们要创造的是一个“不能被多次实例化的”对象,也就是说只能实例化一次的对象. 2.简单单例模式:只能实例化一次的对象也

单例模式你会几种写法?(转)

前言 只有光头才能变强 回顾前面: 给女朋友讲解什么是代理模式 包装模式就是这么简单啦 本来打算没那么快更新的,这阵子在刷Spring的书籍.在看Spring的时候又经常会看到"单例","工厂"这些字样. 所以,就先来说说单例和工厂设计模式啦,这两种模式也是很常见的,我看很多面经都会遇到这两种模式~ 本文主要讲解单例设计模式,如果有错的地方希望能多多包涵,并不吝在评论区指正! 一.单例模式概述 单例模式定义很简单:一个类中能创建一个实例,所以称之为单例! 那我们什么

[转]单例模式详解

3.1 单例模式的动机 对于一个软件系统的某些类而言,我们无须创建多个实例.举个大家都熟知的例子--Windows任务管理器,如图3-1所示,我们可以做一个这样的尝试,在Windows的"任务栏"的右键弹出菜单上多次点击"启动任务管理器",看能否打开多个任务管理器窗口?如果你的桌面出现多个任务管理器,我请你吃饭,(注:电脑中毒或私自修改Windows内核者除外).通常情况下,无论我们启动任务管理多少次,Windows系统始终只能弹出一个任务管理器窗口,也就是说在一个

设计模式的征途—1.单例(Singleton)模式

单例模式属于创建型模式的一种,创建型模式是一类最常用的设计模式,在软件开发中应用非常广泛.创建型模式将对象的创建和使用分离,在使用对象时无需关心对象的创建细节,从而降低系统的耦合度,让设计方案更易于修改和扩展.每一个创建型模式都在视图回答3个问题:3W -> 创建什么(What).由谁创建(Who)和何时创建(When). 本篇是创建型模式的第一篇,也是最简单的一个设计模式,虽然简单,但是其使用频率确是很高的. 单例模式(Singleton) 学习难度:★☆☆☆☆ 使用频率:★★★★☆ 一.单例

java常见的几种设计模式

设计模式 1.概述 1)设计模式(Design pattern):是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结: 2)分类: 创建型模式(创建对象的): 单例模式.抽象工厂模式.建造者模式.工厂模式.原型模式. 行为型模式(对象的功能): 适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模式. 结构型模式(对象的组成): 模版方法模式.命令模式.迭代器模式.观察者模式.中介者模式.备忘录模式.解释器模式.状态模式.策略模式.职责链模式.访问者模式. 2.简

史上最全设计模式导学目录(完整版)

转自:http://blog.csdn.net/lovelion/article/details/17517213 在看本文前,特别要感谢原作者的分享,还只来得及看了下作者的文档目录(貌似作者好久没更新了呀),想要修内功的同学值得一看!好了,我要去啃书了 基础知识 设计模式概述 从招式与内功谈起--设计模式概述(一):设计模式从何而来? 从招式与内功谈起--设计模式概述(二):设计模式是什么? 从招式与内功谈起--设计模式概述(三):设计模式有什么用?附:个人观点 面向对象设计原则 面向对象设计

最全设计模式导学目录(完整版)

圣诞献礼! 2012年-2013年,Sunny在CSDN技术博客中陆续发表了100多篇与设计模式学习相关的文章,涵盖了七个面向对象设计原则和24个设计模式(23个GoF设计模式 +  简单工厂模式),为了方便大家学习,现将所有文章的链接进行了整理,希望能给各位带来帮助! 祝大家圣诞节快乐! 花絮:本文的工作量大大超过之前的估计,几乎整个平安夜都花在它身上了, 基础知识 设计模式概述 从招式与内功谈起——设计模式概述(一):设计模式从何而来? 从招式与内功谈起——设计模式概述(二):设计模式是什么