最近在整理一些设计模式相关的东西,随便记一下,好记性不如烂笔头,另外也可以达到”警示后人”的作用,哈哈哈哈哈!
一.单例模式实现方式:
饿汗模式,懒汉模式,锁,双重锁,静态代码块,枚举单例,容器单例。
源码应用:
UIL:采用的单例模式是 双重锁单例的实现方法(但源码中未对 instance 设置 volatile关键字)
layoutInflate:getSystemServive 用到的单例模式是 容器单例模式。
MQTT:双重锁机制获取单例
二.建造者模式
源码应用:alertDialog
自己应用:封装日志库的参数传递,播放器创建封装等。
三.原型模式(cloneable)
源码应用:intent.clone,arraylist.clone
四:工厂模式
源码应用:activity.oncreate
自已运用:播放器兼容,对外提供统一接口
五.策略模式:
源码应用:animation 的 interceptor(线性,渐边等差值器)
自己运用:日志库缓存策略的运用,UIL的逆序加载策略(默认是顺序加载的)
六.状态模式:
源码应用:通过setLevel来设置background的图片
七、责任链模式
源码应用:Android 的事件分发机制,okhttp的一系列拦截器实现。
八.观察者模式:
源码应用:listview recycleview rxjava broadcastReceiver EventBus
九.备忘录模式:
源码应用:activity onSaveInstance() onRestoreInstance()
十.迭代器模式:
源码应用:list 、set等的 iterator , sqlite 的 cursor 等
十一.模板方法模式:
源码应用:ansycTask执行流程(onpreExcute();doInbackground(),postExcute(),onProgressUpdate())
activity 执行流程:
onCreate().onStart();,onResume().....
UIL:loadImage()(缓存,加载图片,图片显示)
十二.代理模式
源码应用:activitymanagerProxy
十三.组合模式
源码应用:view ViewGroup
十四.适配器模式
源码应用:listview recycleview adapter
十五.装饰器模式
源码应用:context,contextImpl,activity 等
十六.享元模式
源码应用:string常量池 message.obain()
十七:外观模式
源码应用:插件化 assetmanager等