Modo de una sola columna [estilo Hungry Man y estilo Lazy Man]

Modo de una sola columna [estilo Hungry Man y estilo Lazy Man]

El patrón singleton es una clase que solo proporciona un objeto y un método para obtener este objeto.

Hay dos tipos de patrones singleton:

  • Estilo chino hambriento
  • estilo de hombre perezoso

1. Estilo chino hambriento

  1. constructor privado
  2. Crear objeto dentro de la clase
  3. Proporciona un método estático para acceder a objetos de esta clase.
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. Estilo de hombre perezoso

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. Resumen

El momento para crear objetos en estilo Hungry y estilo Lazy es diferente: el estilo Hungry se crea cuando se carga la clase, mientras que el estilo Lazy se crea cuando se usa.

Supongo que te gusta

Origin blog.csdn.net/weixin_43891901/article/details/131206430
Recomendado
Clasificación