zoukankan      html  css  js  c++  java
  • Java 设计模式——单例模式

    Java有很多的设计模式,但是让我们一个个分析出来,可能就一脸蒙逼了,今天就和大家一块来分析一下Java中的一些常用的设计模式。今天先分析单例模式

    单例模式的好处


    举个例子:有一个类,里面有若干个公共方法,现在我项目中有200个页面会调用到这个类中的方法,怎么办?我们正常的思路可能是获取该类的实例对象,A a = new A(); 然后通过对象a,拿到里面的方法,这种思路是没有问题的,
    但是,如果一个项目中有200个页面调用该类,我们是不是就得new 200个对象,这对内存是极大的浪费,但是单例就可以完美的解决了这样的情况。

    饿汉式

     1 package com.mjj.recyclerviewlocation;
     2 
     3 /**
     4  * Created by Administrator on 2017/11/15 0015.
     5  * huangjialin
     6  */
     7 public class SingletonTest {
     8 
     9     private static SingletonTest  singletonTest = new SingletonTest();
    10 
    11     /**
    12      * 饿汉式
    13      * @return
    14      */
    15     public static SingletonTest getInstance(){
    16         return singletonTest;
    17     }
    18 }

    看起来是不是简单粗暴,这种好处就是节省了时间,需要的时候,直接返回,省去了创建的时间,缺点就是一直占用内容。

    懒汉式

     1 package com.mjj.recyclerviewlocation;
     2 
     3 /**
     4  * Created by Administrator on 2017/11/15 0015.
     5  * huangjialin
     6  */
     7 
     8 public class SingletonTest {
     9     private static SingletonTest singletonTest;
    10 
    11     public SingletonTest() {
    12     }
    13 
    14     /**
    15      * 懒汉式
    16      * @return
    17      */
    18     public static SingletonTest getSingletonTest() {
    19         if (singletonTest == null) {
    20             synchronized (SingletonTest.class) {
    21                 if (singletonTest == null) {
    22                     singletonTest = new SingletonTest();
    23                 }
    24             }
    25 
    26         }
    27 
    28 
    29         return singletonTest;
    30     }
    31 
    32 
    33 }

    懒汉式相对于恶汉式来说,代码多一些,但是好处呢就是不占用内存,缺点就是相对恶汉式来说比较耗时。
    可能很多人无法理解外层有了一个判断,里面为什么还需要一个判断?这是为了预防高并发的情况,从而达到线程安全。

    上面两种,线程都是安全的,选用那种,取决与自己的实际情况。

  • 相关阅读:
    day35
    Audio Unit 基础
    Audio Unit 介绍
    音频PCM编码
    iOS libyuv
    FFmpeg AVPacket
    FFmpeg AVCodec
    FFmpeg编译iOS静态库
    iOS-Cocoapods更新不及时
    iOS-读取txt文件中文乱码
  • 原文地址:https://www.cnblogs.com/huangjialin/p/7838713.html
Copyright © 2011-2022 走看看