Android 设计模式之单例模式
2018-01-23 13:22
197 查看
1.作用:单例的对象必须保证只有一个对象,不允许自由构造对象。
2.适用场景:确保某个类只有一个实例,而且自行实例化向整个系统提供这个实例。
public class HttpUtils {
//volatile的作用是: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.
//一个定义为volatile的变量是说这变量可能会被意想不到地改变,
//这样,编译器就不会去假设这个变量的值了。
//精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。
private volatile static HttpUtils instance;
private HttpUtils()
{
//构造函数 逻辑处理
}
public static HttpUtils getInstance()
{
//第一次判断是否为空
if(instance==null)
{
synchronized (HttpUtils.class) {//锁
//第二次判断是否为空 多线程同时走到这里的时候,需要这样优化处理
if(instance ==null)
{
instance =new HttpUtils();
}
}
}
return instance;
}
} 3.实例
public class AlertDialogUtil {
private volatile static AlertDialogUtil instance;
private AlertDialogUtil.DialogPositiveButtonListener listener;
private AlertDialogUtil() {
}
public static AlertDialogUtil getInstance() {
if (instance == null) {
synchronized (AlertDialogUtil.class) {
if (instance == null) {
instance = new AlertDialogUtil();
}
}
}
return instance;
}
public void showDialog(Context context,String message, String[] items){
AlertDialog.Builder dialog = new AlertDialog.Builder(context);
dialog.setTitle(message);
dialog.setNegativeButton("取消", null);
dialog.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
listener.setDialogChoosePictureListener(i);
}
});
dialog.create().show();
}
public void setDialogChoosePictureListener(AlertDialogUtil.DialogPositiveButtonListener listener) {
this.listener = listener;
}
public interface DialogPositiveButtonListener {
void setDialogChoosePictureListener(int i);
}
}
2.适用场景:确保某个类只有一个实例,而且自行实例化向整个系统提供这个实例。
public class HttpUtils {
//volatile的作用是: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.
//一个定义为volatile的变量是说这变量可能会被意想不到地改变,
//这样,编译器就不会去假设这个变量的值了。
//精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。
private volatile static HttpUtils instance;
private HttpUtils()
{
//构造函数 逻辑处理
}
public static HttpUtils getInstance()
{
//第一次判断是否为空
if(instance==null)
{
synchronized (HttpUtils.class) {//锁
//第二次判断是否为空 多线程同时走到这里的时候,需要这样优化处理
if(instance ==null)
{
instance =new HttpUtils();
}
}
}
return instance;
}
} 3.实例
public class AlertDialogUtil {
private volatile static AlertDialogUtil instance;
private AlertDialogUtil.DialogPositiveButtonListener listener;
private AlertDialogUtil() {
}
public static AlertDialogUtil getInstance() {
if (instance == null) {
synchronized (AlertDialogUtil.class) {
if (instance == null) {
instance = new AlertDialogUtil();
}
}
}
return instance;
}
public void showDialog(Context context,String message, String[] items){
AlertDialog.Builder dialog = new AlertDialog.Builder(context);
dialog.setTitle(message);
dialog.setNegativeButton("取消", null);
dialog.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
listener.setDialogChoosePictureListener(i);
}
});
dialog.create().show();
}
public void setDialogChoosePictureListener(AlertDialogUtil.DialogPositiveButtonListener listener) {
this.listener = listener;
}
public interface DialogPositiveButtonListener {
void setDialogChoosePictureListener(int i);
}
}
String[] items = {"选择本地照片", "拍照"}; AlertDialogUtil.getInstance().showDialog(this,"设置头像",items); AlertDialogUtil.getInstance().setDialogChoosePictureListener(new AlertDialogUtil.DialogPositiveButtonListener() { @Override public void setDialogChoosePictureListener(int i) { switch (i) { case CHOOSE_PICTURE: Intent openAlbumIntent = new Intent(Intent.ACTION_GET_CONTENT); openAlbumIntent.setType("image/*"); startActivityForResult(openAlbumIntent, CHOOSE_PICTURE); break; case TAKE_PICTURE: takePicture(); break; } } });
相关文章推荐
- Android设计模式系列
- Android 23种设计模式
- Android设计模式 观察者模式之eventbus
- Android 设计模式
- Android之设计模式
- Android设计模式(三)- 原型模式
- Android设计模式学习之Builder模式
- Android 设计模式之 MVP(一)
- Android设计模式之(4)----工厂方法模式
- Android设计模式之单例模式的七种写法
- Android设计模式(十四)-模板方法模式
- android设计模式之工厂方法模式
- Android中的设计模式
- Java/Android 设计模式系列(3)--工厂方法模式
- android 设计模式笔记
- Android设计模式系列(4)--SDK源码之模板方法模式
- Java/Android 设计模式系列(12)--组合模式
- Android 设计模式之常见设计模式总结
- Android设计模式之(5)----抽象工厂模式
- Android设计模式之Builder