设计模式之单例模式
1、作用 在一个应用程序中做多保证只有一个实例
2、优点 提升效率 实现数据共享 (Application对象)
实例:
一、懒汉式
package test;
public class SingleTon {
// 由于对象需要被静态方法调用,把方法设置为 static
// 由于对象是 static,必须要设置访问权限修饰符为 private , 如果是 public 可以直接调用对象,不执行访问入口
private static SingleTon singleton;
/**
* 方法名和类名相同 无返回值. 其他类不能实例化这个类对象 对外提供访问入口
*/
private SingleTon() {
}
/***
* 实例方法,实例方法必须通过对象调用 设置方法为静态方法
* @return
*/
public static SingleTon getInstance() {
// 添加逻辑如果实例化过,直接返回
if (singleton == null) {
/** 多线程访问下,可能出现 if 同时成立的情况,添加锁 */
synchronized (SingleTon.class) {
if (singleton == null) {
singleton = new SingleTon();
}
}
}
return singleton;
}
}
二、饿汉式
package test;
public class SingleTon {
// 在类加载时进行实例化.
private static SingleTon singleton = new SingleTon();
private SingleTon() {
}
public static SingleTon getInstance() {
return singleton;
}
}