java设计模式之单例模式

原创 2011年01月14日 16:29:00

今天详细了解了java设计模式中的单例模式


/**
* 单列模型,表示此类的实例对象永远只有一个 .本方法是最简单的单列模型实现,缺点但是大量消耗资源
*
* @author kandee
*
*/
public class SingleModel1 {
// 初始化变量
private static SingleModel1 sm = new SingleModel1();

// 私有构造函数,防止外部类初始化此类
private SingleModel1() {
}

// 返回此类的实例对象
public static SingleModel1 getSingleModel() {
   return sm;
}

}

 

 


/**
* 此类优化了对资源的使用,但是在线程中却存在不安全性,因为getSimgleModel()方法可能 同时被多线程调用,此时if判断就很不安全.
*
* @author kandee
*
*/
public class SingleModel2 {
// 只定义此实例变量,不初始化.
private static SingleModel2 sm;

// 私有构造函数,防止外部类初始化此类
private SingleModel2() {
}

// 返回此类的实例对象,只有当调用此方法时,才实例化sm变量,优化了对资源使用
public static SingleModel2 getSingleModel() {
   if (sm == null) {
    sm = new SingleModel2();
   }
   return sm;
}

}


/**
* 解决了线程不安全的问题,缺点是会使访问性能变慢
*
* @author kandee
*
*/
public class SingleModel3 {
private volatile static SingleModel3 sm;

private SingleModel3() {
}

// syschronized关键字表示同步方法,这样可以避免多线程访问的时候发生错误
public synchronized static SingleModel3 getSingleModel() {
   if (sm == null) {
    sm = new SingleModel3();
   }
   return sm;
}

}

 


/**
* 此类效率高,线程安全.
*
* @author kandee
*
*/
public class SingleModel4 {
private static SingleModel4 sm;

private SingleModel4() {
}

public static SingleModel4 getSingleModel() {
   if (sm == null) {
    // 同步类,这样可以避免多线程访问的时候产生多个对象
    synchronized (SingleModel4.class) {
     if (sm == null) {
      sm = new SingleModel4();
     }
    }
   }
   return sm;
}
}

 

相关文章推荐

java设计模式之单例模式详解

  • 2012年11月02日 17:53
  • 33KB
  • 下载

设计模式--单例模式java例子

  • 2017年02月07日 11:58
  • 9KB
  • 下载

JAVA设计模式之单例模式

概念:   java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。   单例模式有一下特点:   1、单例类只能有一个实例。   2、单例类必须自己自...

java 设计模式 单例模式

  • 2012年03月16日 22:45
  • 2KB
  • 下载

JAVA设计模式中的单例模式

  • 2009年02月24日 16:51
  • 3KB
  • 下载

Java设计模式--单例模式(Singleton)

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

Java技术_每天掌握一种设计模式(002)_使用场景及简单实例(创建型:单例模式)

模式描述 一个类有且仅有一个实例,并且自行实例化并向整个系统提供。 2.模式作用 保证某个类在系统中只有一个实例对象,对于特殊需求来说非常必要。 限制了实例个数有利于GC的回收。...

Java设计模式 -- 单例模式

Java 设计模式之单例模式,懒汉式,饿汉式,双重检查锁定,Iodh方法
  • Hwaphon
  • Hwaphon
  • 2016年02月28日 10:40
  • 981

设计模式——单例模式(Java)——考虑多线程环境下的线程安全问题

设计模式——单例模式(Java)——考虑多线程环境下的线程安全问题 一:单例模式概念 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类...

Java实现设计模式之单例模式

单例模式(Singleton)保证一个类仅有一个实例,并提供一个访问它的全局访问点...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java设计模式之单例模式
举报原因:
原因补充:

(最多只允许输入30个字)