单例设计模式的目标
- 类只有一个实例对象 实现方法:构造方法私有
- 提供全局访问点 实现方法:静态方法获取实例对象
**构造方法私有,从而在类的外部不能new对象,这样来保障只有一个实例对象
代码示例: private singleton() //构造方法
{}
**构造方法一定要变成static方法,因为一般情况下只能先new 一个对象然后才能使用类的方法,现在我们创建的是单例对象,那么就不能在别的地方new 对象,不是静态方法就无法被调用了。
代码示例:public static Jvm getInstance()
**代码:
public class Jvm { private static Jvm instance=null;//不直接创建对象的原因是程序不一定要用到这个对象,要用的时候再创建可以节省系统资源 private Jvm() //构造方法私有,从而避免了外部创造实例对象 {} public static Jvm getInstance() { if(null==instance) //提高效率,避免重复new对象,因为new对象很耗资源 {instance=new Jvm();} //如果之前还没有对象,那么就创建一个新的对象 return instance; } }
**单例模式的优化
多线程情况下有可能创建2个对象,解决方法:双重检查加锁
代码:
package s0227单例设计模式; public class Jvm { private static Jvm instance=null; private Jvm() //构造方法私有,从而避免了外部创造实例对象 {} public static Jvm getInstance() //getInstance方法专门来控制创建实例,线程同步,不然不安全 { if(null==instance) //提高效率,避免重复new对象,因为new对象很耗资源 synchronized(Jvm.class) { if(null==instance) instance=new Jvm(); //如果之前还没有对象,那么就创建一个新的对象 } return instance; } }
**synchronized的用法
1.同一时刻最多只有一个线程执行 synchronized修饰的代码块或者方法
2.当一个线程访问对象的同步代码块时,另一个线程只能访问该对象的非synchronized(this)代码块(如果对象有2个同步方法,另外一个空闲的同步方法也不能使用)。
相关推荐
单例设计模式的优缺点 设计思想 举例表示
单例设计模式源码和案例解析,详细分析四种单例设计模式的使用方法, 并附有博客文档说明。单例设计模式源码和案例解析
文章详细描述了什么是单例设计模式以及单例设计模式的的好处和应用。
C++单例设计模式,单例模式 C++单例设计模式,单例模式
单例设计模式:一直觉得单例模式自己掌握的挺好,但是看完这篇文章后汗颜了。。。
C++单例设计模式: 单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如...
IOS 单例设计模式实例Demo 单例 设计 模式 IOS Singleton
单例模式(Singleton Pattern)是 Java 中最常见的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
单例设计模式、工厂设计模式和抽象工厂模式是常见的软件开发设计模式。这些设计模式提供了一些有用的思想和实现方式,可以帮助开发人员在设计和实现复杂的软件系统时,更加灵活和高效地进行编程。 单例设计模式是一...
简单的单例模式,帮助大家理解代码,主要是用纯java写的。
java单例设计模式
Qt单例设计模式(1-8)
Java中懒汉单例设计模式线程安全测试,单例设计模式的测试
单例模式(单例设计模式)详解1
PHP单例设计模式,连接多数据库源码 单例模式的三个特点 1: 一个类只能有一个实例 2: 它保修自行创建这个实例 3: 必须自行向整个系统提供这个实例. 单例模式中主要的角色 Singleton定义一个Instance操作,允许客户...
本文档,详细的描述了单例模式,有类图,java代码实例,以及讲解、注意点,通过这份文档可以让你很容易理解单例设计模式。
单例设计模式Singleton1
02_JavaSE面试题:单例设计模式
第04章 面向对象(上) 13 单例设计模式