1、单例模式的作用
- 网站计数器
- 应用程序的日志运用
- 数据库连接池
- 项目中读取配置文件的类
- Application
- Windows的Task Manager
- Windows的Recycle Bin(回收站)
=======================================等等
2、饿汉式单例模式简单实现
ackage com.learn.bank;
/**单例模式
* 饿汉模式
*
*/
public class Bank {
//1、私有化类的构造器
private Bank(){
}
//2、内部类创建对象
//要求次对象也是静态的
private static Bank instance = new Bank();
//3、提供公共方法,返回类的对象
public static Bank getInstance(){
return instance;
}
}
package com.learn.test;
/**
* 单例模式测试
*/
import com.learn.bank.Bank;
import org.junit.Test;
public class SinglesTest {
@Test
public void hungryTest(){
Bank bank1 = Bank.getInstance();
Bank bank2 = Bank.getInstance();
System.out.println("输出为真,是同一个对象");
System.out.println(bank1.equals(bank2));
}
}
运行结
3、懒汉式单例模式简单实现
package com.learn.bank;
/** 懒汉模式
*
*/
public class MyBank {
//1、私有化构造器
private MyBank() {
}
//2、可以理解为创建空对象
private static MyBank instance = null;
//3、通过方法返回仅有实例
public static MyBank getInstance(){
if (instance == null) {
instance = new MyBank();
return instance;
}
else {
return instance;
}
}
}
package com.learn.test;
import com.learn.bank.MyBank;
import org.junit.Test;
public class LazyTestMyBank {
@Test
public void testInstance(){
//不能创建对象,只能调用MyBank.getInstance();
MyBank myBank1 = MyBank.getInstance();
MyBank myBank2 = MyBank.getInstance();
System.out.println("输出为真,是同一个对象");
System.out.println(myBank1.equals(myBank2));
}
}
运行结果