单例模式(Singleten Pattern)
来源:互联网 发布:苏州基本办公软件 编辑:程序博客网 时间:2024/05/18 19:20
单例模式的英文原话:Ensure a class has only one instance, and provide a global point of access to it.
——确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
单例模式可以用在建立目录,数据库连接等需要单线程操作的场合,用于实现对系统资源的控制。
由于java语言的特点,单例模式通常有两种表现形式。
1. 饿汉式单例类:类加载时,就进行对象的实例化;
2. 懒汉式单例类:第一次引用类时,才进行对象的实例化。、
1、饿汉式单例类
Singletonstatic Singleton m_instance = new Singleton()static getInstance():Singleton 饿汉式单例类图饿汉式单例类的源代码如下所示。
public class Singleton {// 在类内部就实例化private static Singleton m_instance = new Singleton();// 构造方法私有,保证外界无法直接实例化private Singleton() {}// 通过该发发获得实例对象public static Singleton getInstance() {return m_instance;}}从上述代码中可以看到,类被加载时,静态变量m_instance会被初始化,此时类的私有构造函数会被调用,单例类的唯一实例就被创建出来了。单例类中一个显著地特点是构造函数是私有的,从而避免了外界利用构造函数直接创建出任意多的实例。另外需要注意的是,由于构造函数是私有的,因此该类不能被继承。
2.懒汉式单例类
懒汉式单例类与饿汉式单例类相同的是,类的构造函数是私有的;不同的是,懒汉式单例类在加载式不会将自己实例化,而是在第一次被调用时将自己实例化。
Singletonstatic Singleton m_instance = nullstatic getInstance():Singleton 懒汉式单例类图懒汉式单例类源代码:
public class Singleton {private static Singleton m_instance = null;// 构造方法私有,保证外界无法直接实例化private Singleton() {}// 方法同步synchronized public static Singleton getInstance() {if (m_instance == null) {m_instance = new Singleton();}return m_instance;}}上述代码中,烂事单例类中对静态方法getInstance()进行同步,以确保多线程环境下之创建一个实例,例如,如果getInstance()方法未被同步,并且线程A和线程B同时调用此方法,则执行if(m_instance == null)语句都为真时,那么线程A和线程B都会创建一个对象,在内存中就会出现两个对象,这样就违反了单例模式; 但使用synchronized 关键字进行同步后则不会出先此种情况。
0 0
- 单例模式(Singleten Pattern)
- 单例模式singleten及实现思想
- 浅谈单件模式(单例模式--Singleton Pattern)
- java单例模式(Singleton pattern)
- 单例模式(Singleton Pattern)
- 单例模式(Singleton Pattern)
- 单例模式(Sigleton Pattern)
- 单例模式(Singleton pattern)
- 单例模式(Singleton Pattern)
- 单例模式(Singleton Pattern)
- 6.单例模式(Singleton Pattern)
- 单例模式(Singleton Pattern)
- 二、单例模式(Singleton Pattern)
- 单例模式(Singleton Pattern)
- 单例模式(Singleton Pattern)
- 单例模式(Singleton Pattern)
- 单例模式(Singleton Pattern)
- 单例模式(Singleton Pattern)
- Log4j 2.0在开发中的高级使用详解—默认级别(二)
- 判断一个字符串是否为数值型字符串
- 123_leetcode_Word Break II
- SaaS促进软件企业的二次转型
- CF 257DIV2 B. Jzzhu and Sequences (取余需注意!!!!!!!)
- 单例模式(Singleten Pattern)
- OCP 1Z0 053 174
- 不容错过!开发者必备的十二大Android开发资源
- 3D MAX导出插件编写
- Extjs4.2+struts2+swfupload多文件上传
- Android wear环境搭建
- 老板和员工,到底谁是庄家
- POST 400 Bad Request The request sent by the client was syntactically incorrect
- HOJ 12825 Cup of Cowards(搜索)