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 单例设计模式使用场景

单例设计模式的使用场景说明,优缺点,在线程中该使用那种方式的单例,其中涉及到类在JVM中的分配......
  • bob_Xing_Yang
  • bob_Xing_Yang
  • 2017年05月23日 10:53
  • 386

大话设计模式——单例模式

宏观导图 细节展示  单例模式的结构图: 关键代码:  在GetInstance方法中,要加入判断。 if (instance==null) { instance=new Single...
  • u011500356
  • u011500356
  • 2015年01月05日 21:44
  • 1469

Android面试设计模式之单例模式

在面试的时候面试官会问我们常用的一些设计模式,这里先介绍一下单例模式。 为什么要使用单例模式 1.控制资源的使用,通过线程同步来控制资源的并发访问; 2.控制实例产生的数量,达到节约系统资源; 3...
  • qq_435559203
  • qq_435559203
  • 2016年09月12日 18:25
  • 582

设计模式之——单例模式(Singleton)的实现、优缺点和常见应用场景

一.单例模式的三种实现 以及各自的优缺点 转载自http://my.oschina.net/suyewanwan/blog/102525 单例模式:单例模式的意思就是只有一个实例。单例模式确保某...
  • qq_30465427
  • qq_30465427
  • 2015年08月09日 15:36
  • 1203

java设计模式之单例模式(几种写法及比较)

概念:   java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。   单例模式有以下特点:   1、单例类只能有一个实例。  ...
  • tolcf
  • tolcf
  • 2015年10月21日 22:56
  • 6277

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

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

浅谈JAVA设计模式之——单例模式(Singleton)

一、概述        保证一个类仅有一个实例,并提供一个访问它的全局访问点。 二、适用性      1.当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。      2.当这个唯一...
  • l1028386804
  • l1028386804
  • 2015年05月02日 17:50
  • 1089

Java四种单例设计模式

Java中的四种单例模式单例模式是最容易理解的设计模式之一,介绍Java中单例模式的四种写法。1.饿汉式单例模式public class Singleton{ private static S...
  • twocold_2010
  • twocold_2010
  • 2016年11月20日 15:13
  • 287

浅谈常见设计模式--单例模式 简单工厂模式

今题那站在这里和大家一起分享最近在一本书上看到的关于设计模式的内容,接下来要讲的设计模式有: 单例模式 简单工厂模式 工厂方法和抽象工厂 代理模式 命令模式 策略模式 门面模式 桥接模式 观察者模式 ...
  • xikai18827083487
  • xikai18827083487
  • 2016年11月13日 17:04
  • 979

Java设计模式—单例模式

单例模式介绍: 单例模式(Singleton Pattern)是Java中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创...
  • ning421479924
  • ning421479924
  • 2017年06月11日 01:13
  • 120
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java设计模式之单例模式
举报原因:
原因补充:

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