单列模式【饿汉式和懒汉式】

简介: 单列模式【饿汉式和懒汉式】

单列模式【饿汉式和懒汉式】

单例模式就是一个类只提供一个对象出来,提供一个取得这个对象的方法。

单例模式有两种:

  • 饿汉式
  • 懒汉式

1、饿汉式

  1. 私有化构造器
  2. 类的内部创建对象
  3. 向外提供一个访问本类的对象的静态方法
package com.linghu.single;
/**
 * 饿汉式
 * @author 令狐荣豪
 * @version 1.0
 */
public class SingleTon01 {
    public static void main(String[] args) {
//        Girlfriend instance = Girlfriend.getInstance();
//        System.out.println(instance);
        //饿汉式
        System.out.println(Girlfriend.n);//访问静态属性时,类的对象还是会被初始化创建,这就浪费了!
    }
}
class Girlfriend{
    private String name;
    public static int n=100;
    private static Girlfriend gf=new Girlfriend("小红");
    private Girlfriend(String name) {
        System.out.println("构造器。。。");
        this.name = name;
    }
    public static Girlfriend getInstance(){
        return gf;
    }
    @Override
    public String toString() {
        return "Girlfriend{" +
                "name='" + name + '\'' +
                '}';
    }
}

2、懒汉式

package com.linghu.single;
/**
 * 懒汉式
 * @author 令狐荣豪
 * @version 1.0
 */
public class SingleTon02 {
    public static void main(String[] args) {
        //访问静态属性的时候,对象不会被创建,不会浪费,需要的时候才会初始化创建对象
        System.out.println(Cat.n);
//        Cat instance = Cat.getInstance();
//        System.out.println(instance);
    }
}
class Cat{
    private String name;
   public static int n=100;
    private static Cat cat;
    private Cat(String name) {
        System.out.println("构造器调用...");
        this.name = name;
    }
    public static Cat getInstance(){
        if (cat==null){
            cat=new Cat("喵喵");
        }
        return cat;
    }
    @Override
    public String toString() {
        return "Cat{" +
                "name='" + name + '\'' +
                '}';
    }
}

3、总结

饿汉式和懒汉式创建对象的时机不一样,饿汉式是在类加载的时候就创建了,懒汉式是在使用时才创建。

目录
相关文章
|
11月前
|
设计模式 存储
static应用之 单例设计模式(饿汉单例&懒汉单例)
本章我们来学习单例模式中的饿汉单例和懒汉单例,那么什么是单例模式呢?应用该模式的这个类永远只有一个实列,即一个类只能创建一个对象例如电脑上的任务管理器对象只需要一个就能解决问题,可以节省内存空间先定义一个类,把构造器私有如下图,先来看一下没有把构造器私有化的SingleInstance类,此时Test类中可以随意创建多个SingleInstance的实例化。 在SingleInstance类中用private修饰无参构造器,此时左边new方法报错了。我们在右边创建一个静态变量来存储对象,变量名为instan
47 0
|
5月前
|
设计模式 安全 Java
单例模式:饿汉模式、懒汉模式
单例模式:饿汉模式、懒汉模式
81 0
|
4月前
|
安全 Java
线程安全的单例模式(Singleton)
线程安全的单例模式(Singleton)
|
5月前
|
SQL 安全 Java
懒汉式单例的3个坑
懒汉式单例的3个坑
|
5月前
|
安全 Java 编译器
单例模式之饿汉模式&懒汉模式
单例模式之饿汉模式&懒汉模式
|
安全
线程安全的单例懒汉式
线程安全的单例懒汉式
39 0
|
安全 Java
懒汉式单例
懒汉式单例
|
安全 Java
饿汉式单例
饿汉式单例
|
缓存 安全 Java
双重检查锁单例
双重检查锁单例
单例模式(懒汉和饿汉)——独生子女挺好
单例模式(懒汉和饿汉)——独生子女挺好