Android常用开源库所使用的设计模式有哪些?

  1. OkHttp

1)构造者模式。 构建不同的Request对象。

2)工厂模式 。 通过OkHttpClient生产出产品RealCall。

3)观察者模式。OkHttp 的某些组件可能使用观察者模式来监听和响应事件,如连接状态的变化或请求的完成。

4)单例模式。连接池(ConnectionPool)或分发器(Dispatcher)设计为单例。

5)责任链模式。 将不同功能的拦截器形成一个链。

6)享元模式 。 通过线程池、连接池共享对象。

7)外观模式。 通过OkHttpClient这个外观去实现内部各种功能。

  1. Retrofit
  1. 动态代理。Retrofit利用Java的动态代理技术为接口创建代理实现类。这使得用户可以直接调用定义的接口方法,而Retrofit会在运行时将这些调用转换为HTTP请求。

  2. 门面(外观)模式。暴露简洁的API。

  3. 适配器模式。Retrofit中的CallAdapter和Converter.Factory都是适配器模式的体现。CallAdapter负责将Retrofit的Call对象适配为不同的类型,如RxJava的Observable或Java的Future。Converter.Factory则负责将HTTP响应体适配为Java对象。

4)建造者模式。用户可以链式地设置Retrofit的各种配置参数,如baseUrl、converter、callAdapter等。

5)工厂方法模式。CallAdapter.Factory和Converter.Factory都是抽象工厂,可以基于它们创建具体实现类。

  1. RxJava

1)观察者模式。在RxJava中,Observable(被观察者)发出事件或数据项,而Observer(观察者)或Subscriber(订阅者)则订阅这些事件,并对它们进行响应。

2)迭代器模式。Observable发出的事件可以被连续地处理,并且可以使用操作符(如map、filter等)来转换和处理这些事件流。

3)策略模式。每个操作符都实现了某种特定的数据处理策略,如转换、过滤、合并等。

  1. Glide

1)单例模式

2)工厂模式。Glide 中的 ModelLoaderFactory、DiskCache.Factory 和 TransitionFactory 等都是工厂模式的体现。

3)构建者模式。允许用户通过链式调用配置多个参数,从而创建一个完整的 Glide 请求对象。

4)原型模式

5)观察者模式

6)责任链模式

7)策略模式

8)装饰模式

9)组合模式

10)享元模式

5.Gson

1)单例模式

2)代理模式

3)工厂模式。Gson在创建特定类型的对象时,如解析器和序列化器时,使用工厂模式。

6.GreenDao

1)单例模式

2)工厂模式。GreenDao在生成数据库访问对象(DAO)时,采用工厂模式。

3)模版方式模式


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

相关推荐
成都大菠萝1 小时前
Android Car CarProperty 车辆信号链路
android
敲代码的鱼1 小时前
PDF 预览与签名批注写回 支持安卓 iOS 鸿蒙 UTS插件
android·前端·ios
洛卡卡了3 小时前
我们在用 AI 写代码时,为什么建议要好好维护 AGENTS.md 呢?
面试·agent·claude
时光足迹3 小时前
uni-app 视频通话实战:康复师与患者视频问诊的 6 个致命 Bug 与解决方案
android·ios·uni-app
PBitW3 小时前
GPT训练我的第三天,明白了应该咋说满分回答!😕😕😕
前端·javascript·面试
她的男孩3 小时前
数据权限为什么不能只靠注解?Forge 的 Mapper 层 SQL 改写源码拆解
java·后端·架构
小爷毛毛_卓寿杰3 小时前
我把 397B 的「Agentic 大脑」塞进了 Xinference,一键部署 Nex-N2
人工智能·架构·github
柒和远方5 小时前
从一次工程审查看 AI 学习产品的边界兜底:RAG 资料链路一致性实战
前端·后端·架构
小爷毛毛_卓寿杰5 小时前
我把一个 3B 模型塞进了 Xinference,然后它干掉了 DeepSeek V3.2
人工智能·开源·github
raindesound5 小时前
Android+QC modem手机通信模块技术分析 (2)
架构