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

写一个单例(Singleton),并说明单例的目的和好处

时间:2016-09-01 16:11:50      阅读:324      评论:0      收藏:0      [点我收藏+]

标签:

单例的目的:保证一个类只有单一的实例,也就是说你无法通过new来创建这个类的一个新实例。

单例的好处:当一个对象在程序内部只能有一个实例的时候,它可以保证我们不会重复创建,而是始终指向同一个对象。

Singleton通过将构造方法限定为private避免了类在外部被实例化,在同一个虚拟机范围内,Singleton的唯一实例只能通过getInstance()方法访问。

 第一种:在声明变量时实例化(也叫饿汉式单例模式),代码如下:

public class Singleton {

      private static Singleton instance = new Singleton(); //已经自行实例化

      private Singleton(){}  //私有的默认构造

  public static Singleton getInstance() { //静态工厂方法

       return instance;  

   } 

 } 

第二种:把对象的创建放到方法里面去(也叫懒汉式单例模式),代码如下:

 public class Singleton { 

  private static Singleton instance = null;

        private Singleton(){}

  public static synchronized Singleton getInstance() {

       //也可以这样写:synchronized public static Singleton getInstance() {

      if (instance == null){

       instance = new Singleton();

           }

           return instance; 

     } 

各自的优缺点

    第一种饿汉式:

    优点:在类加载初始化的时候就创建对象,调用getInstance的时候,没有同步方法,运行时性能较高。

    缺点:类加载速度慢,占用太多大的资源空间。

   第二种懒汉式:

    优点:避免了第一种方式的缺点, 同时,可以在多线程下运行安全。

    缺点:因为他使用了锁,在运行中效率慢。

 

写一个单例(Singleton),并说明单例的目的和好处

标签:

原文地址:http://www.cnblogs.com/rxl007/p/5829892.html

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