设计模式之单例设计模式

单例设计模式

单例模式就是解决不管创建了多少次对象,始终得到的都是同一个对象,并且提供一种可以访问这个对象的方式,可以直接访问,不需要实例化该类的对象.

单例类的特点:
  1. 单例类只能有一个实例
  2. 这个实例必须由单例类自己创建
  3. 单例类需要提供给外界访问这个实例
单例类的作用

单例模式主要为了保证在java应用程序中,一个类只有一个实例存在

注意: 以下这两种单例模式只适合小并发的系统, 一旦到了多线程,高并发的场景,以下逻辑就会被全部推翻打乱,你就要升维了,就要学习高并发了

懒汉式单例模式

懒汉式: 类加载时不会创建该单实例对象,首次使用该对象时才会创建

java 复制代码
class Flower {
    private static Flower flower = null;

    //构造方法私有化,不允许在类外部创建对象
    private Flower() {
    }
    //提供一个公共的访问方式,让外界可以获取到该类的对象
    public static Flower getFlower() {
        //如果instance为null,表明还没有创建该类的对象,进行创建
        if (flower == null) {
            flower = new Flower();
        }
        //如果不为null,表明已经创建过该类的对象,根据单例类只能创建一个对象的特点,因此直接返回flower
        return flower;
    }
}
//使用的时候创建对象
饿汉式单例模式
java 复制代码
//一开始就把创建对象创建好
class Flower {
    //在类中创建本类对象
    private static Flower flower = nwe Flower();

    //构造方法私有化,不允许在类外部创建对象
    private Flower() {
    }
    //提供一个公共的访问方式,让外界可以获取该类对象,static是因为外界不需要创建对象,直接用类访问
    public static Flower getFlower() {
        return flower;
    }
}

public class Test{
    public static void main(String[] args){
        //创建Flower类的对象 这个时候就无法用new创建了,因为Flower的构造方式是私有的
        Flower f1=Flower.getFlower();
        Flower f2=Flower.getFlower();
        
        判断两个对象是不是同一个
            System.out.println(f1 == f2)
    }
}
相关推荐
「QT(C++)开发工程师」8 小时前
C++设计模式
开发语言·c++·设计模式
茶本无香9 小时前
设计模式之七—装饰模式(Decorator Pattern)
java·设计模式·装饰器模式
漂洋过海的鱼儿21 小时前
设计模式——EIT构型(三)
java·网络·设计模式
老蒋每日coding1 天前
AI Agent 设计模式系列(十八)—— 安全模式
人工智能·安全·设计模式
老蒋每日coding1 天前
AI Agent 设计模式系列(十六)—— 资源感知优化设计模式
人工智能·设计模式·langchain
老蒋每日coding1 天前
AI Agent 设计模式系列(十七)—— 推理设计模式
人工智能·设计模式
冷崖1 天前
桥模式-结构型
c++·设计模式
连山齐名1 天前
设计模式之一——堵塞队列
设计模式
会员果汁1 天前
19.设计模式-命令模式
设计模式·命令模式
茶本无香1 天前
设计模式之六—组合模式:构建树形结构的艺术
java·设计模式·组合模式