• java设计模式----单例模式


    单例模式保证一个类中只有一个实例且该实例易于外界访问。

    懒汉模式(实现了懒加载,不需要同步的情况下效率低)

    public class SingletonClass{
        private static SingletonClass instance=null;
        public static synchronized SingletonClass getInstance()
        {
            if(instance==null)
            {
                   instance=new SingletonClass();
            }
            return instance;
        }
        private SingletonClass(){
        }
    }
    

    饿汉模式(基于classloder机制避免了多线程的同步问题)

    public static class Singleton{
        //在自己内部定义自己的一个实例,只供内部调用
        private static final Singleton instance = new Singleton();
        private Singleton(){
            //do something
        }
        //这里提供了一个供外部访问本class的静态方法,可以直接访问
        public static Singleton getInstance(){
            return instance;
        }
    }
    

     懒汉模式和饿汉模式都是在类初始化即实例化instance

    双重锁模式

    public static class Singleton{
        private static Singleton instance=null;
        private Singleton(){
            //do something
        }
        public static Singleton getInstance(){
            if(instance==null){
                synchronized(Singleton.class){
                    if(null==instance){
                        instance=new Singleton();
                    }
                }
            }
            return instance;
        }
    }
    

    静态内部类(classloder的机制来保证初始化instance时只有一个线程,只有被调用的时候instance才会初始化,省资源)

    public class Singleton {    
            private static class LazyHolder {    
               private static final Singleton INSTANCE = new Singleton();    
            }    
            private Singleton (){}    
            public static final Singleton getInstance() {    
              return LazyHolder.INSTANCE;    
            }    
        }    
    

    枚举

    public enum Singleton {  
        INSTANCE;  
        public void whateverMethod() {  
        }  
    }  
    

    它不仅能避免多线程同步问题,而且还能防止反序列化重新创建新的对象  

  • 相关阅读:
    构建简单的二叉树(C)
    C指針淺析(3)
    C語言函數
    C# 細節(2)
    如何做好软件架构设计
    C# 細節(1)
    .NET Framework格式化字符串
    Windows下通过删除硬盘分区直接强行移除Fedora后恢复Windows启动项的方法
    DreamWeaver使用技巧学习心得
    MyEclipse使用心得、快捷键、设置
  • 原文地址:https://www.cnblogs.com/JAYIT/p/5051184.html
Copyright © 2020-2023  润新知