单例模式:(静态内部类)

private ProgressDialogUtil() {}private static class ProgressDialogUtilHolder {    private static ProgressDialogUtil mProgressDialogUtil = new ProgressDialogUtil();}public static ProgressDialogUtil getInstance() {    return ProgressDialogUtilHolder.mProgressDialogUtil;}

使用静态内部类的好处:当progressdialogutil类被加载时,其内部类并不会被初始化,故可以确保当progressdialogutil类被载入JVM时,不会初始化单例类,当getinstance()方法被调用时,才会加载progressdialogutilholder,从而初始化progressdialogutil类.

同时,由于实例的建立是在类加载时完成,故天生对多线程友好,getinstance()方法也不需要使用同步关键字

 

 类的静态属性只会在第一次加载类的时候初始化,所以在这里,JVM帮助我们保证了线程的安全性,在类进行初始化时,别的线程是无法进入的。

优点:避免了线程不安全,延迟加载,效率高。

 

 

代理模式:

例子:电脑桌面的快捷方式。电脑对某个程序提供一个快捷方式(代理对象),快捷方式连接客户端和程序,客户端通过操作快捷方式就可以操作那个程序

 

参考:https://blog.csdn.net/column/details/14783.html

https://blog.csdn.net/carson_ho/article/details/54910472

刘望舒写的设计模式系列 http://liuwangshu.cn/categories/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/

更多相关文章

  1. Lottie for Android(安卓)开源动画
  2. 一个android 异步多线程类介绍
  3. Android实现异步加载
  4. 运用BitmapFactory.Options来改善程序加载图片效率和避免内存溢
  5. 网络请求工具类HttpUtils
  6. 漂亮的Android加载动画
  7. Fragment中添加tabs
  8. Android(安卓)listview使用
  9. Android(安卓)WebView基本用法及常见问题

随机推荐

  1. 使用SourceInsight查看android中的native
  2. android logo、android开机动画改变详解
  3. android framework 启动流程
  4. Android中Service的使用详解和注意点(Loca
  5. android之view获取getWidth()和getHeight
  6. 〖Android〗Android(安卓)App项目资源字
  7. ANdroid之蓝牙
  8. Android应用程序请求SurfaceFlinger服务
  9. Android(安卓)Lollipop
  10. 浅谈android的selector,背景选择器