android常用设计模式

本文详细介绍了Android开发中常见的五种设计模式:单例模式、构建者模式、策略模式、代理模式和观察者模式。通过实例展示了它们在实际项目中的应用,包括懒汉与饿汉单例的区别、构建者模式在对话框创建中的应用、策略模式提高代码可读性和拓展性、代理模式在任务委派中的体现以及观察者模式在事件传递中的作用。
摘要由CSDN通过智能技术生成

一、设计模式

  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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值