单例模式

99 阅读2分钟

「这是我参与11月更文挑战的第29天,活动详情查看:2021最后一次更文挑战」## 单例模式:(Singleton)

  单例的有且只有一个实例对象

单例模式的本质

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建

单例对象的创建

单例模式;要求此系统中有且只有一个实例对象;

  • 1.确定是饿汉式还是懒汉式,然后创建一个静态的私有变量

  • 2.构造器私有化

  • 3.外部访问对象,要从我们自己构造好的私有对象返回

单例模式的分类

  • 懒汉式
  • 饿汉式

确定是哪种分类的,可以利用的是当前的静态的私有变量展示,

确定是饿汉式还是懒汉式,然后创建一个静态的私有变量

懒汉式 懒汉式时间换空间

private static Person Instance;

饿汉式直接创建

饿汉式,不让变动

private static final Person Instanc=new Peson();

单例模式的步骤

  1. 确定是饿汉式还是懒汉式,然后创建一个静态的私有变量
  2. 构造器私有化
  3. 外部访问对象,要从我们自己构造好的私有对象返回

单例的例子

代码实现:


/**
 * @author lucas
 * @create 2021-12-07 15:01
 * @description  单例模式的实体类
 */
public class Person {


    private String name;

    private  Integer age;
    /**
     * 单例模式;要求此系统中有且只有一个实例对象;
     *
     *  1.确定是饿汉式还是懒汉式,然后创建一个静态的私有变量
     *  2.构造器私有化
     *  3.外部访问对象,要从我们自己构造好的私有对象返回       *
     */


 
    /**
     * 1.确定是饿汉式还是懒汉式,然后创建一个静态的私有变量
     * private  static final  Person Instanc=new Peson(); 饿汉式,不让变动
     */
    private  static   Person Instance;   //懒汉式时间换空间



    /**
     * 2.构造器私有化
     */
    private Person (){
        System.out.println("需要创建一个对象person");
    }

    /**3.外部访问
     * 公共的静态方法-->利用静态存储方法区,
     * 建立一个静态的空对象,如果需要就一直存在,直至程序完结
     * @return
     */
    public static Person getPerson(){
        //多线程情况下不安全
        if (Instance==null){
            Person person=new Person();
            Instance=person;
        }
    return Instance;
    }

    public static void main(String[] args) {
       //静态的公共获取方法--对象都一样
        Person person1 = Person.getPerson();
        Person person2 = Person.getPerson();

        System.out.println(person1==person2);
    }
}