zoukankan      html  css  js  c++  java
  • 单例模式——饿汉模式和懒汉模式

     1 /**
     2  * 单例模式Singleton
     3  * 应用场合:有些对象只需要一个就足够了.
     4  * 作用:保证整个应用程序中某个实例只有一个.
     5  * 类型:饿汉模式.
     6  */
     7 public class Singleton {
     8     //1.将构造方法私有化,不允许外部直接创建对象
     9     private Singleton(){
    10         
    11     } 
    12     
    13     //2.创建类的唯一实例   使用private static修饰符
    14     private static Singleton instance = new Singleton();
    15     
    16     //3.提供一个用于获取实例的方法  使用public  static修饰符    (面向对象的封装性要求控制访问,不允许其他类直接访问本类的成员变量(私有化))
    17     public static Singleton getInstance(){
    18         return instance;
    19     }
    20 }
     1 /*
     2  * 对象是方法被调用时,才初始化,也叫做对象的延时加载。称为:懒汉式
     3  * Single类进内存,对象还没有存在,只有调用getInstance方法,才建立对象。
     4  */
     5 class Single1{
     6     private Single1(){}
     7     private static Single1 s=null;
     8     /*
     9      *此处可以加一个synchronized(同步),使只有一个线程可以进入该方法,避免错乱。
    10 * 但是每次只有一个线程可以进入导致该方法效率低。
    11     public static synchronized Single1 getInstance(){ 
    12         if(s==null)
    13             s=new Single1();
    14         return s;
    15     }
    16     */
    17     
    18     /*以下方法更为高效*/
    19     public static Single1 getInstance(){
    20         if(s==null){
    21             synchronized(Single1.class) {
    22                 if(s==null)
    23                     s=new Single1();
    24             }
    25         }    
    26         return s;
    27     }
    28 }

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

    饿汉模式的特点是加载类时比较慢,但运行时获取对象的速度比较快,线程安全

    懒汉模式的特点是加载类时比较快,但运行时获取对象的速度比较慢,线程不安全

  • 相关阅读:
    openwrt
    第37章 socket编程 之练习:实现简单的web服务器
    Unix domain socket IPC
    String题目解析1
    this()与super()
    if当中是赋值怎么办
    编译时检查错误有哪些
    int与Integer
    log4j日志级别怎么搞
    数据库标准八步每一步中的作用
  • 原文地址:https://www.cnblogs.com/lezhifang/p/6735938.html
Copyright © 2011-2022 走看看