• 设计模式--单例模式


    设计模式--单例模式

    1.概述


    1.1 定义

    "Ensure a class has only one instance,and provide global point of access to it"(确保该类只有一个实例,而且想整个系统提供这个实例)

    1.2 意义

    由于单例模式在内存中只有一个实例对象,节约内存空间,减少了对象创建、GC时的系统消耗。

    1.3 应用

    单例模式(Singleston Pattern)经常能够在程序中看见,例如Spring框架中默认Bean为Singleton.

    2.详解

    注:以下代码都没有考虑反射强行创建对象。
    单例模式的通用代码

     

     1 public class Singleton {
     2     // 静态的对象实例
     3     private static Singleton instance = new Singleton();
     4     // 静态方法获得该类的实例对象
     5     public static Singleton getInstance(){
     6         return instance;
     7     }
     8     // 私有的构造方法,避免其他类创建该类的对象。
     9     private Singleton(){}
    10 }

     

    有一点小小的问题:当我们访问该类的其他静态方法、静态域会造成该类的实例化,浪费内存空间。

    ~~~~~~~~~~~~~~~~~~~~~我是无聊的分割线~~~~~~~~~~~~~~~~~~~~

    比上面好一点的单例模式

     1 public class Singleton {
     2     // 私有的构造方法,避免其他类创建该类的实例对象
     3     private Singleton(){}
     4     // 静态方法获得该类的实例对象
     5     public static Singleton getInstance(){
     6         return SingletonInstance.instance;
     7     }
     8     // 内部类初始化实例对象
     9     private static class SingletonInstance{
    10         static Singleton instance = new Singleton();
    11     }
    12 }

    ~~~~~~~~~~~~~~~~~~~~~我是萌萌的分割线~~~~~~~~~~~~~~~~~~~~

    差的单例模式

     1 public class Singleton {
     2     // 静态的实例对象
     3     private static Singleton instance;
     4     // 静态方法获得该类的实例对象
     5     public static Singleton getInstance(){
     6         if(instance == null){
     7             instance = new Singleton();
     8         }
     9         return instance;
    10     }
    11     // 私有的构造方法,避免其他类创建该类的实例对象
    12     private Singleton(){}
    13 }

    问题:当高并发时,系统实际上会产生多了实例对象。如线程A执行到instance = new Single(),可能还没有获得对象(对象初始化需要时间)时,而线程B执行到instance == null判断为true继续创建新的实例对象。

  • 相关阅读:
    最新hadoop入门教程汇总篇(附详细图文步骤)
    hadoop入门篇-hadoop下载安装教程(附图文步骤)
    hadoop入门篇---超详细hadoop服务器环境配置教程
    hadoop伪分布式环境搭建之linux系统安装教程
    最新hadoop虚拟机安装教程(附带图文)
    关于hadoop集群管理系统搭建的规划说明
    Hanlp中文自然语言处理入门介绍
    hadoop最新版本介绍之dkhadoop版本选择
    hadoop家族学习路线图之hadoop产品大全
    大数据构建智慧城市“新引擎”,加速推进新旧动能转换
  • 原文地址:https://www.cnblogs.com/maying3010/p/6477141.html
Copyright © 2020-2023  润新知