Java设计模式之单例设计模式

大家好,我是教授.F

单例设计模式就是保证整个软件系统中,某个类只能存在一个对象实例,并且该类只提供一个取得该对象的方法。

单例设计模式包括两种:饿汉式和懒汉式。

饿汉式:

含义:

在类加载时就创建并初始化单例对象。这种方式确保了多线程环境下保持单例的唯一性

对象通常是重量级对象,饿汉式可能造成创建了对象,但是没有使用。

步骤:

  • 构造器私有化===》防止直接new
  • 类的内部创建对象
  • 向外暴露一个静态的公开方法

整体就是,用static修饰一个对象,然后将构造器私有化,保证外界无法调用构造器,然后向外暴露一个static修饰的public方法,该方法能返回该目标对象,所以只能在这个方法调用目标对象。

那为什么说是饿汉式:原因是,对象用static修饰后,在编译时就以创建并初始化完毕,显得很着急,所以叫饿汉式。

懒汉式:

含义:

懒汉式是一种延迟加载的方式来创建单例对象,单例对象在首次被请求时才会被实例化

步骤:

  • 构造器私有化

  • 定义一个静态属性对象

  • 提供一个public的static方法,可以返回一个对象

  • 懒汉式,只有当用户使用时,才返回该对象,后面再次调用,会返回上次创建的对象

  • 从而保证了单例 不会调用构造器,因为没有创建一个对象

案例:

java 复制代码
class caT {
    private String name;
    public static int n1 = 999;
    private static caT cat;//定义一个静态属性对象 默认为空

    private caT(String name) {
        System.out.println("构造器被调用");
        this.name = name;
    }
    public static caT getInstance(){
        if(cat == null){//如果没有创建cat对象  第二次就不为空,就不会调用了
            cat = new caT("旺财");//这里创建了caT对象,会调用构造器
        }
        return cat;
    }

}

只有调用是才进行初始化对象。

相关推荐
m0_73691910几秒前
C++中的类型标签分发
开发语言·c++·算法
天桥下的卖艺者4 分钟前
使用R语言编写一个生成金字塔图形的函数
开发语言·数据库·r语言
爬山算法4 分钟前
Hibernate(78)如何在GraphQL服务中使用Hibernate?
java·hibernate·graphql
2301_790300967 分钟前
C++与微服务架构
开发语言·c++·算法
stevenzqzq8 分钟前
Slot API 设计模式
设计模式·compose
reddingtons9 分钟前
Cascadeur:动态总是“飘”?“物理外挂流” 3分钟直出重力感 2D 立绘
游戏·设计模式·aigc·设计师·游戏策划·游戏美术·cascadeur
独断万古他化9 分钟前
【Spring 核心:AOP】基础到深入:思想、实现方式、切点表达式与自定义注解全梳理
java·spring·spring aop·aop·切面编程
一切尽在,你来11 分钟前
C++多线程教程-1.1.4 并发编程的风险(竞态条件、死锁、数据竞争、资源争用)
开发语言·c++
Wyy_9527*12 分钟前
行为型设计模式——策略模式
设计模式·策略模式
艳阳天_.13 分钟前
web 分录科目实现辅助账
开发语言·前端·javascript