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

    单例对象:保证内存中只存在一个对象, 保证对象的唯一性。

    1) 禁止其他程序通过构造函数创建该类对象。

    2) 只允许其他程序通过该类中的定义方法来实例化对象。

    实现:

    1) 在类中创建该类的私有静态的对象。

    2) 将构造函数私有化。

    3) 提供一个静态方法来获取该对象。

    饿汉式设计模式:

     1 /**
     2  * 饿汉式设计模式
     3  *
     4  * @author Wáng Chéng Dá
     5  * @create 2017-02-21 8:30
     6  */
     7 public class HungryMan {
     8 
     9     //在饿汉式设计模式中, 初始化变量的时候最好加上 final 关键字, 这样比较严谨。
    10     private final static HungryMan hungryMan = new HungryMan();
    11 
    12     private HungryMan() {
    13 
    14     }
    15 
    16     public static HungryMan getHungryMan() {
    17         return hungryMan;
    18     }
    19 }

    懒汉式设计模式:

     1 /**
     2  * 懒汉式设计模式
     3  *
     4  * @author Wáng Chéng Dá
     5  * @create 2017-02-21 8:37
     6  */
     7 public class LazyMan {
     8 
     9     private static LazyMan lazyMan = null;
    10 
    11     private LazyMan() {
    12 
    13     }
    14 
    15     /**
    16      * 考虑并发情况
    17      * 但是每次都需要判断锁, 影响程序加载的效率, 应尽量减少判断锁的次数,
    18      * 提高程序的运行效率, 所以在锁外层又加了一层判断。
    19      */
    20     public static LazyMan getBiLazyMan(){
    21         if (lazyMan == null) {
    22             synchronized (LazyMan.class) {
    23                 if (lazyMan == null) {
    24                     lazyMan = new LazyMan();
    25                 }
    26             }
    27         }
    28         return lazyMan;
    29     }
    30 
    31     //不考虑并发情况
    32     public static LazyMan getLazyMan(){
    33         if (lazyMan == null) {
    34             lazyMan = new LazyMan();
    35         }
    36         return lazyMan;
    37     }
    38 }

    饿汉式设计模式和懒汉式设计模式的区别:

    饿汉式设计模式:程序只要开始, 就将对象实例化, 用到的时候就省去了再实例的时间, 所以速度和反应快。

    懒汉式设计模式:只有用到对象的时候才会将对象实例化,不会浪费,所以效率要高一些。

  • 相关阅读:
    Leetcode 233 Number of Digit One
    获取各种常见形状的位图
    关于编程
    LintCode-第k大元素
    基于IBM Bluemix的数据缓存应用实例
    LeakCanary:简单粗暴的内存泄漏检測工具
    MFC,C++,VC++,VS2010 之间究竟是什么关系
    我对高考考场制度(比方是否同意迟到、忘带考证、上厕所)优化的点滴思考,不一定非常有道理
    ural 1989(树状数组+多项式hash)
    TI C66x DSP 系统events及其应用
  • 原文地址:https://www.cnblogs.com/chinda/p/6422426.html
Copyright © 2011-2022 走看看