[设计模式]单例模式饿汉式写法

一.什么是单例模式

一个类对应一个对象

二.特点

唯一对象在类初始化的时候就new好了

eg:

2.1第一种写法

复制代码
public class SingleOne {
    //在类的内部提前创建好这个类的唯一对象
    private static final SingleOne singleOne = new SingleOne();
    //其他成员正常定义
//    private int a;

    //构造器私有化,不允许外部创建对象
    private SingleOne(){
        ;
    }

    //供外界获取这个类的唯一对象
    public static SingleOne getSingleOne(){
        return singleOne;
    }

    //其他成员正常定义
}
复制代码
import org.junit.jupiter.api.Test;

public class TestSingleOne {
    @Test
    public void testSingleOne(){
        SingleOne singleOne = SingleOne.getSingleOne();
        SingleOne singleOne1 = SingleOne.getSingleOne();
        System.out.println(singleOne == singleOne1);
    }
}

2.2第二种写法

复制代码
public class SingleOneAnotherWriteModel {
    public static final SingleOneAnotherWriteModel singleOneAnotherWriteModel
            = new SingleOneAnotherWriteModel();;
    //其他成员正常定义

    //构造器私有化
    private SingleOneAnotherWriteModel(){
        ;
    }

    //其他成员正常定义
}
复制代码
import org.junit.jupiter.api.Test;

public class TestSingleOneAnotherWriteModel {
    @Test
    public void testSingleOneAnotherWriteModel(){
        SingleOneAnotherWriteModel singleOne = SingleOneAnotherWriteModel.singleOneAnotherWriteModel;
        SingleOneAnotherWriteModel singleOne1 = SingleOneAnotherWriteModel.singleOneAnotherWriteModel;
        System.out.println(singleOne == singleOne1);
    }
}

三.特点

饿汉式写法没有线程安全问题

相关推荐
染指111010 小时前
140.Agent-多Agent框架-Agent执行Skills流程
数据库·人工智能·设计模式·langchain·agents
sarasuki15 小时前
Agent 是怎么做错误处理的呢?
人工智能·设计模式·agent
A1Book15 小时前
从 0 设计历史专题资料汇编的 AI Agent 编排架构——六轮真实任务复盘
设计模式
geovindu2 天前
rust: Simple Factory Pattern(续)
后端·设计模式·rust·简单工厂模式·创建型模式
喜欢coding的谢同学2 天前
Go语言常用设计模式基础和实践案例介绍
开发语言·设计模式·golang
sarasuki3 天前
Agent 的记忆有几种?你的名字是?
人工智能·设计模式·agent
geovindu3 天前
rust: Flyweight Pattern
开发语言·后端·设计模式·rust·享元模式·结构型模式
沫璃染墨3 天前
《Linux工程实践篇(一):认识设计模式——从日志系统看策略模式》
linux·c++·安全·设计模式·策略模式
十六宿舍3 天前
【软件设计模式-第一课:基础知识了解】
设计模式·架构·面向对象·软件架构
geovindu4 天前
rust: Facade Pattern
开发语言·后端·设计模式·rust·外观模式