zoukankan      html  css  js  c++  java
  • 单例设计模式 (代码实现)

      ---单例设计模式之饿汉式---

      创建SingleInstance类

     1 /**
     2  * 单例设计模式之饿汉式
     3  */
     4 public class SingleInstance {    
     5     /**
     6      * 私有化构造方法
     7      */
     8     private SingleInstance() {}
     9     /**
    10      * 成员变量
    11      */
    12     private static SingleInstance instance = new SingleInstance() ;
    13     /**
    14      * 提供一个静态的成员方法,返回该对象
    15      */
    16     public static SingleInstance getInstance() {
    17         return instance ;
    18     }
    19 }

      创建测试类SingleInstanceDemo

     1 /**
     2  * 单例设计模式的思想:    保证该类在内存中只有一个实例(对象)
     3  * 优点节省内存,提高内存利用率
     4  */
     5 public class SingleInstanceDemo {
     6     
     7     public static void main(String[] args) {
     8         
     9         // 调用方法获取对象
    10         SingleInstance instance1 = SingleInstance.getInstance() ;
    11         SingleInstance instance2 = SingleInstance.getInstance() ;
    12         
    13         // 输出
    14         System.out.println(instance1 == instance2);
    15     }
    16 }

    -------------------------------------------------------------------------------------------------------------

      ---单例设计模式之懒汉式---

      创建SingleInstance2

     1 /**
     2  * 单例设计模式之懒汉式
     3  * 
     4  * 面试中写那种单例设计模式呢?
     5  *         面试中写懒汉式:    因为懒汉式体现了两种思想, 第一种线程问题 , 第二种 延迟加载
     6  * 
     7  *    开发中写饿汉式
     8  */
     9 public class SingleInstance2 {
    10     /**
    11      * 私有化构造方法
    12      */
    13     private SingleInstance2() {}
    14     /**
    15      * 提供一个成员变量
    16      */
    17     private static SingleInstance2 instance = null ;
    18     /**
    19      * 提供一个静态的成员方法
    20      */
    21     public static synchronized SingleInstance2 getInstance() {
    22     
    23         if(instance == null){
    24             instance = new SingleInstance2() ;
    25         }
    26         return instance ;
    27     }
    28 }

      创建测试类SingleInstanceDemo2

     1 public class SingleInstance2Demo {
     2     
     3     public static void main(String[] args) {
     4         
     5         // 获取对象
     6         SingleInstance2 instance1 = SingleInstance2.getInstance() ;
     7         SingleInstance2 instance2 = SingleInstance2.getInstance() ;
     8         
     9         // 比较
    10         System.out.println(instance1 == instance2);
    11         
    12     }
    13 
    14 }
  • 相关阅读:
    leetcode1627 带阈值的图连通性
    leetcode402 移掉k位数字
    Python-Hello world!
    初识Python-Python介绍
    Python初探-购物车程序
    初识Docker
    Mybatis的工作原理
    Mybatis的逆向工程
    Mybatis的简介
    常量、变量&数据类型
  • 原文地址:https://www.cnblogs.com/rongsnow/p/5157103.html
Copyright © 2011-2022 走看看