java单例设计模式学习

  • 饿汉式和懒汉式的区别
    • 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();

    }

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

    时间: 2024-11-06 03:46:04

    java单例设计模式学习的相关文章

    Java单例设计模式的实现

    1. 单例设计模式的定义 单例设计模式确保类只有一个实例对象,类本身负责创建自己的对象并向整个系统提供这个实例.在访问这个对象的时候,访问者可以直接获取到这个唯一对象而不必由访问者进行实例化. 单例设计模式保证了全局对象的唯一性,在许多场景中都有应用.例如Windows中多个进程或线程同时操作一个文件的时候,所有的进程或线程对于同一个文件的处理必须通过唯一的实例来进行. 2. java单例设计模式的几种实现方式 单例设计的最大特点是类的构造函数是私有的,确保了只能由类本身创建对象,而访问者无法进

    Java——单例设计模式

    设计模式:解决某一类问题最行之有效的方法.Java中23种设计模式:单例设计模式:解决一个类在内存中只存在一个对象. 想要保证对象唯一.1,为了避免其他程序过多建立该类对象.先禁止其他程序建立该类对象2,还为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象.3,为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式 这三部怎么用代码体现呢?1,将构造函数私有化.2,在类中创建一个本类对象.3,提供一个方法可以获取到该类对象. 对于事物该怎么描述,还怎么描述.当需要将该事物的对象

    Java: 单例设计模式

    设计模式: * 设计模式:解决某一类问题最行之有效的方法:* Java有23中设计模式* 单例设计模式:解决一个类在内存只存在一个对象:* * 想要保证对象唯一* 1.为了避免其他程序过多建立该类对象.先控制禁止其他程序建立该类对象* 2.还为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象* 3.为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式* * 这三部如何用代码体现呢?* 1. 将构造函数私有化* 2. 在类中建立一个本类对象* 3. 提供一个方法可以获取到该对象

    java单例设计模式八种方式

    单例设计模式介绍 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法). 比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session对象.SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就够,这是就会使用到单例模式. 单例设计模式八种方式 单例模式有八种方式: 饿汉式( ( 静态常 量) ) 饿汉式(静态

    对Java单例设计模式中懒汉式类定义的讨论

    全世界人民都知道单例设计模式中类的定义分为懒汉式和饿汉式两种,然而今天并不是要把它们做横向比较.实际上,不论饿汉式类的代码看起来有多么美轮美奂,在实际开发中它的效率总是不如懒汉式的.然而在笔试和面试中懒汉式的出镜率可以说是比饿汉式不知道高到哪里去了,因此把它完全弄懂应该是十分有必要的. 饿汉式: class Single1 { int num = 1; private static Single1 single1 = new Single1(); private Single1(){} stat

    java—单例设计模式

    单例设计模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 1.构造方法私有化 2.声明一个本类对象 3.给外部提供一个静态方法获取对象实例 什么时候使用? 1.通过在工具类的设计中使用: 2.当一个类中没有属性: 3.该类作为工具类使用非常频繁. 两种方式: 一.饿汉式 1 package practice1; 2 //单例模式 3 public class Test7 { 4 public static void main(String[] args) { 5 Singleton

    Java单例设计模式(实现Java的一个类只有一个对象)

    单例设计模式的定义:单例设计模式是一种软件设计模式,在它的核心包含一个称为单例类的核心类. 核心便是希望一个类只有一个对象.  如何实现类在内存中只有一个对象呢? 第一步:构造私有:第二步:本身提供一个对象:第三步:通过公共的方法让外界访问. 以下就是实现单例类: static关键字修饰对象,则该对象就变成静态资源,共享,形象点说,她就失足了,谁都可以上! class Single{ private static Single s = new Single(); //声明本类的引用类型变量,并且

    java单例设计模式总结及举例

    * 设计模式:前人总结出来的经验,被后人直接拿来使用. * 单例设计模式:一个类只允许有一个对象,将这个对象作为一个全局的访问点,提供出去供大家使用. * 分析: * 1.用户只能有一个对象 * 2.全局的访问点:得到的对象就是全局的访问点. 如何做到全局?让static去修饰 * 3.如何提供出去? * 4.供大家使用?--单例的功能 * 单例类的作用: * 1.可以实现两个对象之间的传值 * 2.可以在全局范围内调用很多的功能. * 好处:可以让两个对象在完全没有关系的前提下,实现值的传递,

    Java单例设计模式

    class Singleton{ private static Singleton instance = new Singleton(); private Singleton(){ } public static Singleton getInstance(){ return instance; } public void print(){ System.out.println("Hello Word"); } } public class singleton { public sta