zoukankan      html  css  js  c++  java
  • 设计模式----创建型型模式之单件模式(Singleton pattern)

      单件模式,又称单例模式,确保一个类只有一个实例,并提供全局访问点。

      单件模式是比较简单且容易理解的一种设计模式。只有一个实例,通常的做法。。。TODO

      类图比较简单,如下所示:

       

      示例代码:

      懒汉模式(初始化时就创建对象):

    public class Singleton {
        private final static Singleton uniqueInstance= new Singleton();
         
        private Singleton() {}
     
        public static Singleton getInstance() {
            return uniqueInstance;
        }
      }
    View Code  

      饿汉模式(需要时就创建对象):

    public class Singleton {
        private static volatile Singleton uniqueInstance= null;
      
        private Singleton() {}
      
        public static  Singleton getInstance() {
            if(uniqueInstance== null){
                 synchronized(this.class){
                     if(uniqueInstance== null){ 
                         INSTANCE = new Singleton();
                      }
                  } 
            }
            return uniqueInstance;
        }
      }
    View Code

      对某一个类实例化仅一个实例,不涉及类之间的依赖等关系。单件模式注意的地方:单例模式(懒汉模式)在多线程应用下需要谨慎,因为

    多个线程同时调用创建实例方法,没有检测到唯一实例的存在,导致各自创建一个实例。当然,上述的代码利用“双重检查加锁”实现减少同synchronized同步所消耗的时间。注:"双重检查加锁"方式只适合jdk5及以后的版本

       单件模式相对比较简单,但是很有实用性。例如获取线程池实例等。

      共勉!!!

      

  • 相关阅读:
    当年的笔记_apache配置虚拟主机
    sqlserver 调优(三)
    bat命令自用其(一)
    Always On主辅延迟相关描述
    sqlserver中常用的windows命令行的操作
    mysql复制以及一主多从等常见集群概述
    sqlserver 调优(二)
    sqlserver 获取实例上用户数据库的数据字典
    sqlserver事务隔离小结
    mysql 慢查询的小结
  • 原文地址:https://www.cnblogs.com/mjs154/p/6857082.html
Copyright © 2011-2022 走看看