码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式中单例模式的介绍

时间:2016-08-23 13:20:41      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:

1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。

2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。

3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(比如一个军队出现了多个司令员同时指挥,肯定会乱成一团),所以只有使用单例模式,才能保证核心交易服务器独立控制整个流程。

首先我们来写一个简单的单例类:

public class SingleClass{

  //私有静态化实例,防止被引用。

  private static  SingleClass singleClass = null;

  //私有化构造器,防止被实例化

  private SingleClass(){

  }

  //静态工程方法,创建实例

  public static SingleClass getInstance(){

    if(singleClass == null){

      return new SingleClass();

    }else{

      return singleClass;

    }

    

  }

}

这个类可以满足基本要求,但是,像这样毫无线程安全保护的类,如果我们把它放入多线程的环境下,肯定就会出现问题了,如何解决?我们首先会想到对getInstance方法加synchronized关键字,如下:

public static synchronized SingleClass getInstance(){

    if(singleClass == null){

      return new SingleClass();

    }else{

      return singleClass;

    }

  }

当然上面所讲可以称之为懒汉式,现在再给大家说一下饿汉式的区别;

 

public class SingleClass{

  //私有静态化实例,防止被引用。

  private static  SingleClass singleClass = new SingleClass();

  //私有化构造器,防止被实例化

  private SingleClass(){

  }

  //静态工程方法,创建实例

  public static SingleClass getInstance(){

    if(singleClass == null){

      return new SingleClass();

    }else{

      return singleClass;

    }

  }

}

饿汉式在类加载的时候就已经实例化,而懒汉式属于用到的时候再去实例化;

 

设计模式中单例模式的介绍

标签:

原文地址:http://www.cnblogs.com/lais/p/5798808.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!