zoukankan      html  css  js  c++  java
  • 设计模式 单例模式

    继续设计模式,这个模式用得应该非常频繁啊,并且也比較简单,假设如今你还不能纸笔随手写个单例出来,你就得加油了哈~

    直接介绍几种线程安全的且我认为还比較不错的方式:

    1、是不是号称恶汉,就是类载入就初始化了

    package com.zhy.pattern.singlton;
    
    public class Singleton
    {
    	private static Singleton instance = new Singleton();
    	
    	public static Singleton getInstance()
    	{
    		return instance ;
    	}
    }
    2、懒汉,我喜欢这样的,须要双重推断

    package com.zhy.pattern.singlton;
    
    
    public class Singleton02
    {
    	private static Singleton02 instance;
    
    	public static Singleton02 getInstance()
    	{
    		if (instance == null)
    		{
    			synchronized (Singleton02.class)
    			{
    				if (instance == null)
    				{
    					instance = new Singleton02();
    				}
    			}
    		}
    		return instance;
    	}
    }

    3、使用Java的枚举,还是非常推荐的,简单的跟神马一样,假设对枚举不熟悉,小google一下

    public enum Singleton03
    {
    	INSTANCE;
    }
    

    4、使用一个持有类,主要是为了不在初始化的时候载入

    package com.zhy.pattern.singlton;
    
    public class Singleton04
    {
    	private static final class InstanceHolder
    	{
    		private static Singleton04 INSTANCE = new Singleton04();
    	}
    
    	public static Singleton04 getInstance()
    	{
    		return InstanceHolder.INSTANCE;
    	}
    }
    

    好了,就这么多,以上4种都是比較推荐使用的,除了第一种会类载入的时候初始化,其它3中都不会,且4种都保证线程安全,特殊情况(除了多个类载入器,和你非要通过反射等手段生成多个对象)不考虑。


  • 相关阅读:
    笔记44 Hibernate快速入门(一)
    tomcat 启用https协议
    笔记43 Spring Security简介
    笔记43 Spring Web Flow——订购披萨应用详解
    笔记42 Spring Web Flow——Demo(2)
    笔记41 Spring Web Flow——Demo
    Perfect Squares
    Factorial Trailing Zeroes
    Excel Sheet Column Title
    Excel Sheet Column Number
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/3850607.html
Copyright © 2011-2022 走看看