Android中常用的设计模式

2021-12-19  本文已影响0人  dfqin

1、观察者模式(Observer Pattern)
使用场景:
BroadCast 监听系统广播或者程序内部自己发送的广播
EventBus 广播原理一样
LiveData 数据更新通知观察者
Adapter 中数据变化时,notifyDataSetChange

2、适配器模式(Adapter Pattern)
把一个类的接口转换为另一个类期待的接口类型,从而是接口不匹配的两个类兼容工作
ListView RecycleView使用适配器模式,通过创建适配器,让数据正确的供RecycleView使用

3、代理模式(Proxy Pattern)
为当前类提供一个代理类给其他类访问,以防止当前类直接暴露出去。
Activity的管理者是ActivityManager,但最终的管理者为ActivityManagerService(AMS),在Android7.0及以前版本中,ActivityManager通过调用ActivityManagerProxy进行一些操作,而ActivityManagerProxy会调用AMS,真正的工作是由AMS来完成的。()

https://www.jianshu.com/p/30ed35c06bba
4、工厂模式(Factory Pattern)
给外部提供一个统一创建特定对象的类,降低创建对象的复杂性。
Android中的BitmapFactory支持用不同的方式创建Bitmap对象。

5、单例模式(Singleton Pattern)
进程中只创建一个实例。Android8.0以上版本,IActivityManager和IActivityTaskManager实例都是单例,使用了系统的单例实现,不过看源码并没有使用所谓的什么高效的实现方式,直接把锁加到了获取实例的地方:

public final T get() {
        synchronized (this) {
            if (mInstance == null) {
                mInstance = create();
            }
            return mInstance;
        }
    }

6、命令模式(Adapter Pattern)
把请求封装成一个对象,从而把不同的客户端参数化。
Handler使用了命令模式,客户端通过sendMessage()发送命令

7、装饰者模式(Decorator Pattern)
动态的给对象添加一些额外的职责
Context体系使用了装饰者,Context是抽象组件,ContextImpl是具体的组件,而ContextWrapper是装饰者,通过扩展ContextWrapper功能,实现Activity、Service等子类


image.png

https://www.jianshu.com/p/6658cfd26b22
https://www.jianshu.com/p/df1a96c5c046

8、责任链模式
一条请求沿着一条链挨个儿传递,直到有对象处理它为止。
Android中UI时间传递使用了责任链模式
OkHttp的拦截器也是使用责任链模式

9、建造者模式(Builder Pattern)
将一个复杂对象的创建和表示分离,使用相同的构建过程创建不同的对象。
AlertDialog使用了建造者模式。

上一篇下一篇

猜你喜欢

热点阅读