首页 > 代码库 > 设计模式

设计模式

单例模式、建造者模式 、工厂模式、生产者模式、开发者模式、

0.单例模式: 数据库对象(SQLiteOpenHelper)

保证了在程序中只有一个实例存在并且能全局的访问到

public class Singleton {  //懒汉式
   /* 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载 */  
    private static Singleton instance = null;  
  
    /* 私有构造方法,防止被实例化 */  
    private Singleton() {  
    }  
    /* 1:懒汉式,静态工程方法,创建实例 */  
    public static synchronized Singleton getInstance() {  
        if (instance == null) {  
            instance = new Singleton();  
        }  
        return instance;  
    }  
}  

 

1.建造者模式builder: AlertDialog.Builder  Retrofit 和 OkHttp 

AlertDialog.Builder builder = new Builder(this);
       //builder.setCancelable(false);//设置对话框是否可以消失,true:可以;false:不可以,屏蔽返回键
       //设置对话框的标题
        builder.setTitle("最新版本:"+mNewsVersion+".0");
        //设置图标
        builder.setIcon(R.drawable.ic_launcher);
        //设置对话框内容
        builder.setMessage(mNewsMsg);
        //监听对话框消失的时候
        builder.setOnCancelListener(new OnCancelListener() {
           @Override
            public void onCancel(DialogInterface dialog) {
                //跳转到首页的操作
                dialog.dismiss();
                enterHome();
            }
        });
        //创建按钮
        builder.setPositiveButton("立即更新", new DialogInterface.OnClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //隐藏对话框,下载最新版本apk
                dialog.dismiss();
                //3.下载最新版本apk
                downloadAPK();
            }
        });
        builder.setNegativeButton("以后再说", new DialogInterface.OnClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //隐藏对话框,跳转到首页
                dialog.dismiss();
                enterHome();
            }
        });
        //展示对话框
        builder.show();

2.工厂模式 :BitmapFactory.decodeByteArray(byte[] data, int offset,int length)

                                      .decodeFIle(String pathName)

                                      .decodeFileDescriptor(FileDescriptor fd)

                                      .decodeResource(Resource res,int id)

                                      .decodeStream(InputStream is)

3,生产者模式: handler机制 ,自己生产自己消费

 

设计模式