单例(Singleton)设计模式
1.概念
- 某个类只能存在一个对象实例,并且该类只提供一个取得该对象实例的方法
2.实现方式
-
懒汉式
// 这种写法线程不安全 package com.lmwei.p20; import com.sun.org.apache.xpath.internal.operations.Or; public class SingletonTest { public static void main(String[] args) { Order o1 = Order.getInstance(); Order o2 = Order.getInstance(); System.out.println(o1 == o2); } } class Order { // 1. 私有的构造器 private Order() { } // 2.声明当前对象,没有初始化 对象声明也必须是static private static Order instance = null; // 3. 声明public 返回当前对象 public static Order getInstance() { if(instance == null){ instance = new Order(); return instance; } return instance; } } -
饿汉式
package com.lmwei.p20; public class Singleton { public static void main(String[] args) { Bank bank1 = Bank.getInstance(); Bank bank2 = Bank.getInstance(); //此时生成的两个对象是同一个对象 System.out.println(bank1 == bank2); } } class Bank { // 1.私有化类的构成器,避免在类的外部去生成对象 private Bank() { } // 2.内部创建类的对象 要求此对象也必须是静态的 private static Bank instance = new Bank(); // 3. 提供公共的方法返回对象 public static Bank getInstance() { return instance; } } -
懒汉式和饿汉式的区别
- 懒汉式
- 好处:
延迟对象的创建 - 坏处:
线程不安全
- 好处:
- 饿汉式(提前创建好对象)
- 好处:
天然就是线程安全的 - 坏处:
对象加载时间过长
- 好处:
- 懒汉式
3.单例模式的使用场景
- 网站计数器
- 应用程序的日志应用
- 数据库连接池
- 读取配置文件的类
- Application
- Windows的任务管理器
- Windows的回收站
单例模式详解:懒汉式与饿汉式对比及实战应用
本文详细介绍了单例设计模式的概念,展示了懒汉式和饿汉式两种实现方式的区别,包括线程安全问题,并探讨了它们在网站计数器、日志应用等场景的应用。
263

被折叠的 条评论
为什么被折叠?



