文档章节

单例模式(Singleton)

小湘西
 小湘西
发布于 2015/09/27 16:33
字数 371
阅读 63
收藏 1

   使用条件:  当系统中只需要某个类的唯一对象时,可以使用该模式

        为什么会用到该模式?:因为有时候某些对象的创建需要耗费大量的资源、使用单一(唯一)的对象实例来维护某些共享数据等,在这些场景下即可采用单例模式进行设计,可以适当地渐少内存开销,因为此时该唯一对象不会(被限制了)频繁地创建。


第一种:饱汉模式

public class SingleTon{

   private SingleTon(){ };

  private  static  SingleTon    instance = new SingleTon();

  public static SingleTon getInstance()

   {  

     return instance;

    }

}


第二种:饥汉模式

public class SingleTon{

        private SingleTon(){};

        private static SingleTon instance = null;//new SingleTonight();

        public static synchronized SingleTon getInstance()

                     {

                            if(instance==null)  instance = new SingleTon();

                           return instance;

                    }

}

这个方法比上面方法有所改进,不用每次都进行生成对象,只是第一次使用生成实例,提高效率。

注意到第二种形式中的synchronized,这个synchronized很重要,如果没有synchronized线程同时访问时则可能出现混乱,所以我们可以在该方法前加上synchronized关键字来保证其被同步访问。

综合来说呢,
就是不给外界调用自己构造方法的机会,
而只能通过类似于getInstance()之类的方法得到此类的实例,
而此实例早已生成,
只能调用,
不能新建,
从而保证了在java应用程序中,一个类只有一个实例存在。


© 著作权归作者所有

小湘西
粉丝 19
博文 100
码字总数 27575
作品 0
东城
程序员
私信 提问
设计模式1——Singleton设计模式

Singleton单例模式是最简单的设计模式,它的主要作用是保证在程序运行生命周期中,使用了单例模式的类只能有一个实例对象存在。单例模式实现了类似C语言中全局变量的功能,单例模式常用于注册...

小米米儿小
2013/12/05
167
1
23种设计模式(1):单例模式

定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 类型:创建类模式 类图: 类图知识点: 1.类图分为三部分,依次是类名、属性、方法 2.以<<开头和以>>结尾的为注释...

LCZ777
2014/07/05
245
0
为什么java中用枚举实现单例模式会更好

枚举单例是java中使用枚举提供一个实例对象来实现单例模式的一种新方法,虽然单例模式在java中早已存在,但枚举单例实际上从java5引入枚举作为它的关键特性之后相对来说还是一个新的概念,这...

zhoujy
2013/06/01
8.8K
1
C++设计模式——一个基于C++11的万用单例模板类

单例模式概述 单例模式(Singleton),是设计模式里面最常见、最常用的设计模式,也是最简单、最容易实现的设计模式。单例模式的目的很简单,创建一个全局唯一的对象(类or变量)。 简单代码...

GodMayCry
2017/11/06
720
2
Java程序员从笨鸟到菜鸟之(三十三)大话设计模式(三)单例模式

本文来自:曹胜欢博客专栏。转载请注明出处:http://blog.csdn.net/csh624366188 单例模式属于对象创建型模式,其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点。对一些类来说...

长平狐
2012/11/12
160
0

没有更多内容

加载失败,请刷新页面

加载更多

领域驱动中的“贫血症和失忆症”

贫血症严重危害着人类健康,并且伴随有危险的副作用。当贫血领域对象被首次提出来时,它并不是一个博得赞美的词汇,它描述的是一个缺少内在行为领域对象。奇怪的是,人们对于贫血领域对象的态...

还仙
刚刚
0
0
条码打印软件中标签预览正常打印无反应怎么解决

在使用条码打印软件制作标签时,有客户反馈,标签打印预览正常的,但是打印无反应,咨询是怎么回事?今天针对这个情况,可以参考以下方法进行解决。 一、预览正常情况下,打印没反应 (1)在条码...

中琅软件
10分钟前
0
0
判断字符串的时候

判断字符串的时候一定把常量房前边, //报警程度 String leve = vo.getDeviceAlertDeal().getWarnLevel(); if(("0").equals(leve)) { row.add("无报警"); }else if(("1").equals(leve)) { ro......

简小姐
10分钟前
0
0
Linux maven3.6.2 install

PS:安装 maven 之前请先安装 jdk 1.安装 wget 命令(安装过就不用了) yum -y install wget 2.寻找需要的 maven 版本 https://maven.apache.org/download.cgi 3.进入 /var/local 文件夹 cd...

东方神祇
12分钟前
0
0
Tomcat源码分析二:先看看Tomcat的整体架构

Tomcat源码分析二:先看看Tomcat的整体架构 Tomcat架构图 我们先来看一张比较经典的Tomcat架构图: 从这张图中,我们可以看出Tomcat中含有Server、Service、Connector、Container等组件,接下...

flygrk
15分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部