单例(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的回收站
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)