单例设计模式
时间:2023-02-21 22:00:00
目录
-
- 饿汉式(先创对象)
- 懒汉式(后创对象)
- 二者的区别
- 单例模式的应用场景
- 小结
单例设计模式:对于某一类,只能有一个对象实例
饿汉式(先创对象)
1.私有化此类结构:避免在类外创建对象
2.由于结构器的私有化,这类对象是在这类对象内部创建的
3、声明public
、static
返回此类对象的方法
,让外部类调用这个对象
4.因为这种公共方法不能在外建,这种公共方法必须是静态的,而不是实例的。由于这种公共方法是静态的,非静态结构不能在该方法中使用,因此返回此类对象
需要是static
的
public class Untitled {
public static void main(String[] args) {
Test t1 = Test.m(); Test t2 = Test.m(); System.out.println(t1 == t2); //true } } class Test{
// private Test(){
System.out.println("a"); } //2.创建此类对象 //5,对象必须是静态的 private static Test t = new Test(); //3.提供返回对象的方法 //4.方法必须是静态的,而不是实例 public static Test m(){
return t; } }
懒汉式(后创对象)
1.私有化这种结构
2.声明目前的对象没有初始化
3.提供公共方法返回此类对象
class Untitled {
public static void main(String[] args) {
Test t1 = Test.m();
Test t2 = Test.m();
System.out.println(t1 == t2);
}
}
class Test{
//1/私有化构造器
private Test(){
System.out.println("a");
}
//声明 static 对象,但不创建
private static Test t = null;
//提供 public、static 的返回对象的方法
public static Test m(){
if(t == null)
t = new Test();
return t;
}
}
二者的区别
- 饿汉式:
- 劣:对象加载时间过长
- 优:线程安全
- 懒汉式:
- 劣:线程不安全
- 优:延迟对象的创建
单例模式的应用场景
网站的计数器
应用程序的日志应用
数据库连接池
读取配置文件的类
Application
Windows的 Task Manager(任务管理器)
Windows的 Recycle Bin(回收站)
小结
饿汉式代码
class Test{
private Test(){
}
private static Test t = new Test();
public static Test m(){
return t;
}
}