一、设计模式
1、单例模式
一般单例模式的意思是全局中只用一个实例。下面示范使用单例的两个比较好的案例。
⑴ 懒汉模式
/** 懒汉模式,双重校验锁
* Created by chenjk on 2018/8/6.
*/
public class Single {
//单例
private static voletite Single _instant;
//注意设置为private,私有模式,只有通过内部生成实例,保证内部构造函数不被访问,保持单例
private Single(Context context ){
}
/** 懒汉模式
* @param context
* @return
*/
public static Single getInstance(Context context){
if (_instant==null){
//这里注意要加锁,保证线性安全
synchronized (Single.class){
if(_instant==null){
_instant = new Single(context);
}
return _instant;
}
}
return _instant;
}
}
⑵ 饿汉模式
/** 饿汉模式
* Created by chenjk on 2018/8/6.
*/
public class HungrySingle {
private static HungrySingle _intant; //单例
//同时构造函数需要私有化
private HungrySingle(){
}
public static HungrySingle getInstance(Context context){
return Holer.hungrySingle;
}
static class Holer{
static HungrySingle hungrySingle = new HungrySingle();
}
}
说明:饿汉模式与懒汉模式的区别在于, * 懒汉模式在需要的时候才初始化出来,饿汉模式在进程启动的时候就创建了实例了。饿汉模式使用了内部类的形式,比在外部类去实例化更合理一些,因为你无法确定外部类是否被被动的加载出来,这个时候初始化实例对象就有点浪费内存了,具有那么一点优势所在,所以更推荐。单例应该被慎用,尽量减少内存的使用。分情况使用懒汉单例和饿汉单例。
2、构建者模式
构建者模式在android开发中尤为常见,也是我比较常用和比较喜欢的设计模式之一。比较在我们的AlerDialog当中,如下:
AlertDialog.Builder builder = new AlertDialog.Builder(MainApplication.getApplication());
AlertDialog alertDialog = builder.setMessage("测试")
.setCancelable(false)
.create();
构造者模式,可以根据你的需求构造你需要的一些信息出来,其他的为默认。我在设计mvp框架中model实现层的时候经常会用到构造者模式去设计,以满足一些类似接口的需求。还有我应用在构建生成普遍的dialog当中去快捷的生成dialog,不用每次都去创建一个dialog类。
class Model {
protected boolean isFromCache;
protected int cacheTime;
protected boolean isLoading;
private Model(boolean isFromCache, int cacheTime, boolean isLoading) {
this.isFromCache = isFromCache;
this