• 设计模式总结4--singleton pattern


    单例模式

    保证每个类只有一个实例,并提供一个全局访问点

    第一步 构造方法私有化
    第二步 公有化静态方法获取的实例

    懒汉式 

    public class Bank{
    
        private Bank(){}
        private static Bank bank = null;
        public static Bank getInstances(){
        
            if(bank == null){
                bank = new Bank();
            }
            return bank;
        }
    
    }

    构造方法在私有化之后在main方法中是不能创建对象的,也就不能用对象点方法
    调用getInstances,所以getInstances方法要加static直接用Bank.getInstances.
    在静态的方法中是不能有实例变量的,所以bank要加static

    对于懒汉式有时候会造成线程安全问题,最好加synchronnized

    public class Bank{
    
        private Bank(){}
        private static Bank bank = null;
        public static synchronized Bank getInstances(){
        
            if(bank == null){
                bank = new Bank();
            }
            return bank;
        }
    
    }

    double check版本

    public class Bank{
    
        private Bank(){}
        private static Bank bank = null;
        public static Bank getInstances(){
        
            if(bank == null){
                synchronized(this){
                    if(bank == null){
                        bank = new Bank();
                    }
                }
            } 
            return bank;
        }
    
    }

    饿汉式

    public class Bank{
    
        private Bank(){}
        private static Bank bank = new Bank();
        public static Bank getInstances(){
        
            return bank;
        }
    
    }

    内部类方式

    public class SingleTon {
        private SingleTon() {
        }
    
        private static class SingleTonHolder {
            private static SingleTon instance = new SingleTon();
        }
    
        public static SingleTon getInstance() {
            return SingleTonHolder.instance;
        }
    
    }

    采用内部类方式维护单例,可以做到懒加载又可以做到不采用关键字synchronized,避免双重锁机制判断

     

  • 相关阅读:
    shell 实现word count
    jvm 参数调优
    Java注解处理器(转)
    JVM -XX: 参数介绍(转)
    如何在Linux下重命名多个文件
    Kafka学习之broker配置(0.8.1版)(转)
    linux 历史命令用法(转)
    hive-site.xml 参数设置
    Hadoop-2.2.0 + Hbase-0.96.2 + Hive-0.13.1(转)
    正则表达式通过Unicode属性匹配
  • 原文地址:https://www.cnblogs.com/itliucheng/p/4226908.html
Copyright © 2020-2023  润新知