Java设计模式——单例模式
1.单例设计模式:
解决问题:就是可以保证一个类在内存中的对象的唯一性,对多个程序使用同一个配置对象时,就需要保证该对象的唯一性!
2.如何保证对象的唯一性:
1.不允许其他的程序用New创建该类对象
2.在该类中创建一个本类实例
3.对外提供一个方法让其他程序可以获取该对象
3.步骤:
1.私有化该类的构造函数
2.通过new 在本类中创建一个本类的私有化静态对象
3.定义一个公有方法将该对象返回
/** * * @类名: 单例模式 * @功能: TODO * @作者: Allen * @日期:2014-10-27 下午10:37:34 */ class Single { private static Single aSingle = new Single(); private Single(){}; public static Single getInstance() { return aSingle; } }
但是以上实现没有考虑线程安全问题。所谓线程安全是指:如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。显然以上实现并不满足线程安全的要求,在并发环境下很可能出现多个Singleton实例。
1.饿汉式单例类
/** * @类名: 饥饿式单例模式,在类创建时,就已经实例化 */ class SingleDemo { private static SingleDemo SingleInstance = new SingleDemo(); private SingleDemo(){}; public static SingleDemo getInstance(){ return SingleInstance; } }
2.懒汉式单例模式
/** * @类名: //懒汉式单例类.在第一次调用的时候实例化 */ class SingleInstance { private static SingleInstance SingleInstance ; private SingleInstance(){}; public static SingleInstance getInstance(){ if (SingleInstance==null) { SingleInstance = new SingleInstance(); } return SingleInstance; } }
版权声明:本文为博主原创文章,未经博主允许不得转载。(转载请注明出自 AllenCoder)
posted on 2014-10-27 23:57 AllenCoder 阅读(165) 评论(0) 编辑 收藏 举报
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 从零开始开发一个 MCP Server!
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档