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

    一、概念介绍

    单例模式,也叫单子模式,是一种常用的软件设计模式。

    在应用这个模式时,单例对象的类必须保证只有一个实例存在。

    许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。

    比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。

    二、构建方式

    通常单例模式在Java语言中,有两种构建方式:

    懒汉方式。指全局的单例实例在第一次被使用时构建。

    饿汉方式。指全局的单例实例在类装载时构建。

    不管采取哪种构建方式,他们都有共同的特点:

    1、构造函数私有化,避免外部类创建实例;

    2、创建私有静态对象引用;

    3、对外提供一个公共方法获取实例

    三、实例演示

    1、懒汉方式(懒加载)

    /**
     * 静态内部类实现懒汉模式
     */
    public class Singleton {
    
        //套路1:
        // 构造器私有,防止被外部实例化
        private Singleton() {
        }
    
        //套路2:
        //创建私有的静态内部类,只有在使用内部类时才会加载,所以是懒汉
        private static class SingletonInstanceClass {
            private static Singleton instance = new Singleton();
        }
    
        //套路3:
        //对外提供一个公共方法获取该实例
        public static Singleton getInstance() {
            return SingletonInstanceClass.instance;
        }
    }
    

    2、饿汉模式

    /**
     * 懒汉方式构建单例
     */
    public class Singleton {
        //套路1:
        // 构造器私有,防止被外部实例化
        private Singleton() {
        }
    
        //套路2:
        //创建私有静态属性(实例化)
        private static Singleton instance = new Singleton();
    
        //套路3:
        //对外提供一个公共方法获取该实例
        public static Singleton getInstance() {
            return instance;
        }
    }
    

      

  • 相关阅读:
    内存映射文件原理探索(转)
    inux内存映射和共享内存理解和区别
    MySQL中的sleep函数介绍
    flask源码解析之上下文为什么用栈
    linux system函数详解
    Python中的可迭代对象、迭代器和生成器,协程的异同点
    GB2312汉字区位码、交换码和机内码转换方法 (ZT)
    pthread_cond_signal该放在什么地方?
    IPC介绍——10个ipcs例子
    lsof
  • 原文地址:https://www.cnblogs.com/zhengxl5566/p/10282842.html
Copyright © 2011-2022 走看看