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

设计模式学习笔记(1)——单利模式

时间:2016-12-13 12:09:08      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:构造器   问题:   open   时间   版本   des   hid   public   ret   

单例模式必须只有一个实例,并且提供一个全局访问方法。

解析经典单利模式实例:

技术分享
 1 package designPatterns;
 2 
 3 public class Singleton {
 4 
 5      //利用一个静态变量来记录类的唯一实例
 6 
 7      private static Singleton uniqueInstance;
 8 
 9      //声明私有构造器,只有本类可以调用该构造器
10 
11      private Singleton(){}
12 
13      //创建一个静态的方法获取实例对象
14 
15      public static Singleton getSingletonObj(){
16 
17          if(uniqueInstance==null){
18 
19               uniqueInstance=new Singleton();
20 
21          }
22 
23          return uniqueInstance;
24 
25      }
26 
27 }
View Code

解决多线程同步问题:

  1. 添加线程同步synchronize

  例如:每次都进行同步效率较低,适用于较少适用对象场合

package designPatterns.singleton;

public class Singleton {

    //利用一个静态变量来记录类的唯一实例

    private static Singleton uniqueInstance;

    //声明私有构造器,只有本类可以调用该构造器

    private Singleton(){}

    //创建一个静态的方法获取实例对象(synchronized多线程处理,保证只有一个实例)

    public static synchronized Singleton getSingletonObj(){

        if(uniqueInstance==null){

            uniqueInstance=new Singleton();

        }

        return uniqueInstance;

    }

   

}

2.创建急切单利模式:长时间占用内存(适用与频繁适用对象场合)

public class Singleton {

//利用一个静态变量来记录类的唯一实例

private static Singleton uniqueInstance=new Singleton();;

//声明私有构造器,只有本类可以调用该构造器

private Singleton(){}

//创建一个静态的方法获取实例对象(synchronized多线程处理,保证只有一个实例)

public static Singleton getSingletonObj(){

     return uniqueInstance;

}

}

3.双重检查加锁:

例如:只有第一次创建对象的时候才进行同步(volatile只用于JDK4.0以上版本

public class Singleton {

    //利用一个静态变量来记录类的唯一实例

    private static volatile Singleton uniqueInstance ;

    //声明私有构造器,只有本类可以调用该构造器

    private Singleton(){}

    //创建一个静态的方法获取实例对象(synchronized多线程处理,保证只有一个实例)

    public static  Singleton getSingletonObj(){

        if(uniqueInstance==null){

            synchronized(Singleton.class){

                uniqueInstance=new Singleton();

            }

        }

        return uniqueInstance;

    }

}

设计模式学习笔记(1)——单利模式

标签:构造器   问题:   open   时间   版本   des   hid   public   ret   

原文地址:http://www.cnblogs.com/jishushijie/p/6169315.html

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