zoukankan      html  css  js  c++  java
  • Java单例模式浅析 (Singleton模式)

       之所以说是浅析单例模式是因为其实单例模式有很多种实现的写法,比如lazy initialization思想带来同步锁的实现方式纠结起细节来就可以写出很多种,这里我主要说一种实现的方式,也是最简单的—静态成员直接初始化的方式。

             为什么会产生单例这个设计模式?主要是,如果我们在开发的过程中,每个实例都新建一个的话,会产生很多的内存开销,这对JVM不是什么好事,除此以外,如果很多实例,当这些实例不需要了,JVM去回收又是一件麻烦事,所以对于一些实例,如果确定可以共享,就不如一起共享一个,节省内存,提高性能。

            

     1 /**
     2  * 
     3  * @author LingJian
     4  *
     5  */
     6 public class Car {
     7     //Singleton的其中一种写法 有多种写法
     8     //分配在static块 这样就保持一致都存在
     9     private static Car c = new Car();
    10     
    11     //防止自己new 这样就不能Car c = new Car() 即不能生成多个实例
    12     private Car() {
    13         
    14     }
    15     
    16     public static Car getInstance() {
    17         return c;
    18     }
    19     
    20     public void run() {
    
    21         System.out.println("car run");
    22     }
    23 }
     1 /**
     2  * 
     3  * @author LingJian
     4  *
     5  */
     6 public class Test {
     7 
     8     /**
     9      * @param args
    10      */
    11     public static void main(String[] args) {
    12         //singleton
    13         Car c = Car.getInstance();
    14         Car cc = Car.getInstance();
    15         if(c == cc) System.out.println("the same car");
    16         c.run();
    17     }
    18 
    19 }

             这是最简单的实现单例模式的方法,但是它的不足之处在于不管这个资源是否被调用,它都一直分配在static区域,实际上也是占用内存的,只是不会每次都开辟内存而已。

  • 相关阅读:
    ABAP 表格控制(Table Control)和步循环
    ABAP中正则表达式的简单使用方法 (转老白BLOG)
    ABAP常用函数集锦
    ALV用例大全
    DXP 笔记
    STM32笔记——Power Controller(PWR)
    STM32之glossary
    STM32 解析futaba S-bus协议
    Windows下 vundle的安装和使用
    使用串口绘制实时曲线 —— SerialChart
  • 原文地址:https://www.cnblogs.com/iou123lg/p/3019384.html
Copyright © 2011-2022 走看看