zoukankan      html  css  js  c++  java
  • Java单态模式

    Java的单态模式 Singletom

    作用:保证在Java应用程序中,一个Java类只有一个实例存在;所以一般单态类会提供一个返回该类实例的方法。提供一个对对象的全局访问指针。

    优点:节省内存,限制类的个数,有利于Java的垃圾回收机制(Garbage Collection );

    缺点及注意点:

             1、多线程情况下,懒加载模式可能导致线程不安全因素,例如:同时有两个线程同时调用getInstance方法获取实例时,可能两个线程同时进入if语句判断块,此时类尚未被实例化,那么将同时得到两个不同的实例(此注意点比较容易避免,获取实例时使用同步sync就可以很好的解决)。

             2、当单例类被多个classloader加载的情况下,可能获得多个单例类的实例(此种情况可能比较难避免,这需要使所有的类使用相同的类加载器加载)。

             3、当单例类实现了序列化接口(Serializer)时,我们如果将对象序列化,并反序列化得到实例时,这个实例将是一个新的实例,而不是序列化之前的实例(在这种情况下,需要在此类中添加readResolve方法,将返回对象设置为当前实例,否则会获得一个不同意序列化之前的类)。

    具体实例见类  ~~ SingletonDemo.java ~~

    /**
     * @author Verphen
     * @date 2013-9-9  下午11:23:42
     */
    
    package org.verphen.designMode;
    
    public class SingletonDemo {
    
    	/* 构造方法设置成privae,即实现了单态 */
    	private SingletonDemo() {
    	}
    
    	/* 返回一个单态模式的类的实例 */
    	public static final SingletonDemo getInstance() {
    		return new SingletonDemo();
    	}
    }
    



  • 相关阅读:
    x01.os.17: 换心术
    x01.os.16: 添加功能
    x01.os.15: 看上去很美
    JVM 栈帧之操作数栈与局部变量表
    IDEA字节码学习查看神器jclasslib bytecode viewer介绍
    java上下文Context类
    UML ——区分类图中的几种关系.md
    UML ——六种依赖关系.md
    JDK动态代理[1]----代理模式实现方式的概要介绍
    java方法句柄-----5.Method Handles in Java
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3313236.html
Copyright © 2011-2022 走看看