单例设计模式

通过单例模式可以保证系统中一个类只有一个实例

饿汉式

 * 有点:保证线程安全。
 * 缺点:性能大大下降
复制代码
 1 package 单例设计模式;
 2 
 3 public class 饿汉式 {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         Singleton1 s = Singleton1.getInstance();
10     }
11 }
12 class Singleton1{
13     //1.私有构造方法,其他类无法使用
14     private Singleton1(){}
15     //2.声明引用
16     private static Singleton1 s = new Singleton1();
17     public static Singleton1 getInstance(){
18         return s;
19     }
20 }
View Code
复制代码

懒汉式

* 有点:保证线程安全

* 缺点:性能大大下降

复制代码
 1 package 单例设计模式;
 2 
 3 public class 懒汉式 {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         Singleton2 s = Singleton2.getInstance();
10     }
11 }
12 
13 class Singleton2{
14     //1.私有化构造函数
15     private Singleton2(){}
16     //2.声明变量
17     private static Singleton2 s;
18     //3.为变量实例化
19     public static Singleton2 getInstance(){
20         if(s==null){
21             s = new Singleton2();
22         }
23         return s;
24     }
25 }
View Code
复制代码

 /*

* 饿汉式和懒汉式的区别
* 1,饿汉式是空间换时间,懒汉式是时间换空间
* 2,在多线程访问时,饿汉式不会创建多个对象,而懒汉式有可能会创建多个对象
*/

第三种

复制代码
 1 package 单例设计模式;
 2 
 3 public class 第三种 {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) { 
 9         Singleton3 s = Singleton3.s;
10     }
11 
12 }
13 class Singleton3{
14     private Singleton3(){}
15     public static final Singleton3 s = new Singleton3();
16 }
View Code
复制代码

 

posted @   静梦亭  阅读(193)  评论(0编辑  收藏  举报
编辑推荐:
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
阅读排行:
· 想让你多爱自己一些的开源计时器
· Cursor预测程序员行业倒计时:CTO应做好50%裁员计划
· 大模型 Token 究竟是啥:图解大模型Token
· 用99元买的服务器搭一套CI/CD系统
· 如何在 .NET 中 使用 ANTLR4
点击右上角即可分享
微信分享提示