单例模式:
public class SetUtil {
private static SetUtil instance = null;
public static SetUtil getInstance() {
if (instance == null) {
synchronized (SetUtil.class) {
if (instance == null) {
instance = new SetUtil();
}
}
}
return instance;
}
public void saveFilesOrFoldersName(String value, String key) {
edit = sp.edit();
this.edit.putString(key, value);
this.edit.commit();
}
}
静态方法 无需实例化
public class SetUtil {
public static void saveFilesOrFoldersName(String value, String key) {
edit = sp.edit();
this.edit.putString(key, value);
this.edit.commit();
}
}
区别分析:
单例模式使用方法:SetUtil.getInstance().saveFilesOrFoldersName("value","key");
静态使用方法:SetUtil.saveFilesOrFoldersName("value","key");
内存消耗区别:
单例模式:在堆中创建了实例加上静态变量的引用,只要app不销毁就会常驻内存。
静态方法:在程序启动时就分配了静态区域的内存,也会常驻内存。
效率方面:
静态方法效率略高一些,静态方法是可以被共享的,可直接调用。
如何选择:
静态方法适合去完成一个独立的封闭的功能,所以如果方法中不需要维持一些外部的状态值, 可以用静态方法的方式,否则做成单例的方式。除了外部状态值的这种情况, 个人认为这两种方式均可,无伤大雅。
外部状态值:
例如在工具类里面有一些成员变量,假如有个boolean值,你的方法中需要判断或改变这个值,这种情况就是有外部状态的情况。