首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计方式——单例模式

2012-11-21 
设计模式——单例模式单例模式 确保一个类只有一个实例,并提供一个全局访问点. public class Test {private

设计模式——单例模式
单例模式 确保一个类只有一个实例,并提供一个全局访问点.


public class Test {         private static Test test = null;         private Test() {         }         public static Test getInstance() {                                if (test == null) {               test = new Test();           }           return test;       }     


上面单例模式代码,采用延迟加载,在需要的时候再生成实例.但是多线程的情况可能会产生去多个实例.

  //多线程同时访问下面代码.会产生多个实例            public static Test getInstance() {      if (test == null) {test = new Test();}return test;}


同步单例模式
public class Test {private static Test test = null;private Test() {}public synchronized  static Test getInstance() {                  if (test == null) {test = new Test();}return test;}}

上面同步单例模式代码,可以防止多线程下产生多个实例,但是同步这个方法会让程序执行性能下降.

双重加锁单例模式
public class Test {         //volatile标示,多程线下变量不能同时修改private volatile static Test test = null;private Test() {}public static Test  getInstance() {  //只有当实例不存在的时候,才执行同步代码块.生成实例.缩小同步范围提高性能                    if (test == null) {synchronized(Test.class){if(test==null){test = new Test();}}}return test;}}

急切实例化单例模式
public class Test {         //直接初始化静态变量private  static Test test = new Test();private Test() {}public  static Test  getInstance() {return test;}}


上面急切实例化单例模式,不同的类加载器,可能会产生多个实例.需要时指定类加载器.

热点排行