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

    饿汉单例模式:

    package com.design.singleton;
    
    public class EagerSingleton {
    
        private static final EagerSingleton EAGER_SINGLETON = new EagerSingleton();
    
        private EagerSingleton(){}
    
        public static EagerSingleton getInstance(){
            return EAGER_SINGLETON;
        }
    }

    当这个类被加载时,静态变量 EAGER_SINGLETON 就会被初始化。

     懒汉式单例:

    package com.design.singleton;
    
    public class LazySingleton {
    
        private static LazySingleton lazySingleton = null;
    
        private LazySingleton(){}
    
        public synchronized static LazySingleton getInstance(){
            if (lazySingleton == null){
                return new LazySingleton();
            }
            return lazySingleton;
        }
    
    }

    【区别】饿汉单例模式在自己被加载时就将自己实例化。从资源利用的角度讲,饿汉比懒汉差点。从速度和反应时间来讲,饿汉比懒汉块。懒汉在实例化的时候,需要处理多线程的问题。

    还有一种用的比较多的

    静态内部类单例:

    package com.design.singleton;
    
    public class InnerSingleton {
    
        private InnerSingleton(){}
    
        private static class Inner{
            private static InnerSingleton Instance = new InnerSingleton();
        }
    
        public static InnerSingleton getInstance(){
            return Inner.Instance;
        }
        
        public void doSomething(){
            // do something
        }
        
    }

    这个单例线程安全

  • 相关阅读:
    MVC系列-7.更新
    MVC系列-6.注册页面
    MVC系列-5.详细信息
    MVC系列-4.布局页
    MVC系列-3.数据显示
    MVC系列-2.数据处理-登陆
    MVC系列-1.MVC入门
    bootstrap table 服务器端分页--ashx+ajax
    swift学习第八天:元组
    swift学习第七天:字典
  • 原文地址:https://www.cnblogs.com/LUA123/p/7798596.html
Copyright © 2011-2022 走看看