码迷,mamicode.com
首页 > 编程语言 > 详细

java单例设计模式学习

时间:2018-08-11 22:33:34      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:demo   构造方法   设计   pac   class   get   多个   ack   懒汉模式   

  • 饿汉式和懒汉式的区别

    • 1,饿汉式是空间换时间,懒汉式是时间换空间
    • 2,在多线程访问时,饿汉式不会创建多个对象,而懒汉式有可能会创建多个对象
    • 懒汉模式

      
      class Singleton {
      //1,私有构造方法,其他类不能访问该构造方法了
      private Singleton(){}
      //2,声明一个引用
      private static Singleton s ;
      //3,对外提供公共的访问方法
      public static Singleton getInstance() {             //获取实例
      if(s == null) {
          //线程1等待,线程2等待
          s = new Singleton();
      }
      
      return s;
      }
  • # 饿汉模式

    class Singleton {
    //1,私有构造方法,其他类不能访问该构造方法了
    private Singleton(){}
    //2,创建本类对象
    private static Singleton s = new Singleton();
    //3,对外提供公共的访问方法
    public static Singleton getInstance() { //获取实例
    return s;
    }

    # 第三种:

    class Singleton1 {
    //1,私有构造方法,其他类不能访问该构造方法了
    private Singleton1(){}
    //2,声明一个引用
    public static final Singleton1 s = new Singleton1();

    }

    public static void main(String[] args) {
    //Singleton s1 =new Singleton();
    Singleton1 s1 = Singleton1.s;
    Singleton1 s2 = Singleton1.s;
    System.out.println(s1 == s2);

    }
    
    # 整合

    package com.heima.thread;

    public class Demo1_Singleton {

    /**
     * @param args
     * * 单例设计模式:保证类在内存中只有一个对象。
     */
    public static void main(String[] args) {
        //Singleton s1 = new Singleton();
    
        Singleton s1 = Singleton.s;             //成员变量被私有,不能通过类名.调用
        //Singleton.s = null;
        Singleton s2 = Singleton.s;
    
        System.out.println(s1 == s2);
    
    /*  Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
    
        System.out.println(s1 == s2);*/
    }

    }

    /*

    • 饿汉式

    class Singleton {
    //1,私有构造方法,其他类不能访问该构造方法了
    private Singleton(){}
    //2,创建本类对象
    private static Singleton s = new Singleton();
    //3,对外提供公共的访问方法
    public static Singleton getInstance() { //获取实例
    return s;
    }
    }/
    /

    • 懒汉式,单例的延迟加载模式
      /
      /
      class Singleton {
      //1,私有构造方法,其他类不能访问该构造方法了
      private Singleton(){}
      //2,声明一个引用
      private static Singleton s ;
      //3,对外提供公共的访问方法
      public static Singleton getInstance() { //获取实例
      if(s == null) {
      //线程1等待,线程2等待
      s = new Singleton();
      }

      return s;

      }
      }/
      /

    • 饿汉式和懒汉式的区别
    • 1,饿汉式是空间换时间,懒汉式是时间换空间
    • 2,在多线程访问时,饿汉式不会创建多个对象,而懒汉式有可能会创建多个对象
      */

    class Singleton {
    //1,私有构造方法,其他类不能访问该构造方法了
    private Singleton(){}
    //2,声明一个引用
    public static final Singleton s = new Singleton();

    }

    java单例设计模式学习

    标签:demo   构造方法   设计   pac   class   get   多个   ack   懒汉模式   

    原文地址:http://blog.51cto.com/357712148/2158212

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!