java开发当中,单例模式还是用的比较多,也要求性能比较稳定一些。以下写的是参考例子。可以按照这么写,以内部类和枚举类的方法写!当然,你们有更好的模式欢迎提出来!
(1)内部类的实现
-
public class SingletonInner {
-
//内部类实现单例模式
-
//延迟加载,减少内存开销
-
private static class SingletonHolder {
-
private static SingletonInner instance = new SingletonInner();
-
}
-
/**
-
* 私有的构造函数
-
*/
-
private SingletonInner() {
-
}
-
public static SingletonInner getInstance() {
-
return SingletonHolder.instance;
-
}
-
protected void method() {
-
System.out.println("SingletonInner");
-
}
-
}
调用:
-
SingletonInner.getInstance().method();
(2)枚举的方法
-
/**
-
* @function:单例模式枚举实现
-
*
-
*
-
*/
-
public enum SingletonEnum {
-
/**
-
* 1.从Java1.5开始支持;
-
* 2.无偿提供序列化机制;
-
* 3.绝对防止多次实例化,即使在面对复杂的序列化或者反射攻击的时候;
-
*/
-
instance;
-
private String others;
-
SingletonEnum() {
-
}
-
public void method() {
-
System.out.println("SingletonEnum");
-
}
-
public String getOthers() {
-
return others;
-
}
-
public void setOthers(String others) {
-
this.others = others;
-
}
-
}
调用:
-
SingletonEnum.instance.method();
额外:
getApplicationContext() 返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁
Activity.this的context 返回当前activity的上下文,属于activity ,activity 摧毁他就摧毁
getBaseContext() 返回由构造函数指定或setBaseContext()设置的上下文
this.getApplicationContext()取的是这个应 用程序的Context,Activity.this取的是这个Activity的Context,这两者的生命周期是不同 的,前者的生命周期是整个应用,后者的生命周期只是它所在的Activity。
更多文章推广营销渠道,IT文章请关注个人微信公众号:U学问