# AndroidArchitect **Repository Path**: AndroidTq/android-architect ## Basic Information - **Project Name**: AndroidArchitect - **Description**: Android设计模式。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-12-05 - **Last Updated**: 2025-03-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 整体框架。 > 1-20: 设计模式 > 21-27:第三方主流框架,RxJava,EventBus,Retrofit,OkHttp... 基本使用、分析源码、手写核心代码。 > 28-31:开发模式 MVC,MVP,MVVM > 32-40:项目实战。 --------------------------------------------- 01.面向对象六大基本原则 - 网络引擎切换 02.AOP面向切面编程 - 淘宝京东网络处理 03.UML建模 - View 的 Touch 事件分发流程 04.基础知识扫盲 - 反射注解和泛型 05.编译时注解 - ButterKnife源码分析和手写 06.编译时注解 - 绕过微信支付和分享的局限 07.Handler通信 - 源码分析和手写Handler框架 08.单例设计模式 - 强大的 Activity 管理 09.Builder设计模式 - 增强版 NavigationBar 10.工厂设计模式 - 数据存储的特有方式 11.装饰设计模式 - RecyclerView添加头部和底部 12.模版设计模式 - 自己动手写 OkHttp 的 Dispatcher 13.策略设计模式 - Log 日志输出策略 14.Adapter设计模式 - 打造通用的 IndicatorView 15.观察者设计模式 - 观察数据的插入 16.代理设计模式 - 实现 Retrofit 的 create 17.原型设计模式 - 订单查询拆分 18.迭代器设计模式 - 构建通用 BottomTabNavigationBar 19.责任链设计模式 - QQ微信多用户系统检测 20.设计模式 - 23种模式总结(前篇) 21.设计模式 - 23种模式总结(后篇) 22.第三方开源库 EventBus - 源码分析和手写 23.第三方开源库 OKHttp - Java网络编程基础 24.第三方开源库 OKHttp - 整体架构和源码分析 25.第三方开源库 OKHttp - 自己动手写表单提交和文件上传 26.第三方开源库 OKHttp - 源码精髓之拦截器分析 27.第三方开源库 OKHttp - 上传进度监听和自定义缓存 28.第三方开源库 OKHttp - 文件断点下载 29.第三方开源库 RXJava - 基本使用和源码分析 30.第三方开源库 RxJava - 自己动手写事件变换 31.第三方开源库 RxJava - 自己动手线程调度切换 32.第三方开源库 RxJava - Android实际开发场景 33.第三方开源库 Retrofit - 源码设计模式分析 34.第三方开源库 Retrofit - 自己动手写核心架构部分 35.第三方开源库封装 - OkHttp + RxJava + Retrofit 36.第三方开源库 Retrofit - 自己动手优化网络引擎 37.开发模式 MVP - 基础框架搭建分析 38.开发模式 MVP - 静态代理和动态扩展 39.项目实战 - 代码架构和运行时架构 40.项目实战 - 系统架构部分的总结和展望 41.第三方开源库 Glide - 源码分析(补) 42.Android 多模块多组件开发 - 打造属于自己的路由(补) -------------------------------------------------- 理论+实践。持续坚持学习;利他原则。 ## 六大基本原则: 2.1 单一职责原则: > 英文:Single Responsibility Principle 定义:就一个类而言,应该仅有一个引起它变化的原因。简单来说,一个类中应该是一组相关性很高的函数、数据的封装。 请求和缓存完全写到了一堆 小插曲:链式调用,调用方式有问题 ,比如 超时重连,超时时间 ,支持cookie 等等,更多的是关注业务逻辑 问题? xUtils Okhttp Retrofit ...... 切换第三方的网络框架 2.2 开闭原则: > 英文:Open Close Principle 定义:软件中的对象(类、模块、函数等)应该对于扩展是开放的,但是,对于修改是封闭(关闭)的。 当软件需要变化时,应该尽量通过扩展的方式来实现变化,而不是通过修改已有的代码来实现。 2.3 里氏替换原则: > 英文:Liskov Substitution Principle 定义:只要父类能出现的地方子类就可以出现,主要体现就是 实现和继承 ``` // 1.今天所写的初始化请求 HttpUtils.initHttpRequest(new xUtilsRequest()); HttpUtils.initHttpRequest(new OKHttpRequest()); // 2.Recyclerview 的 LayoutManager; 添加decoration分割线; mRecyclerview.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); // 3.Retrofit 添加解析工厂(xml/json...) 等等 ``` 2.4 依赖倒置原则: > 英文:Dependence Inversion Principle 定义:指代了一种特定的解耦形式,高层模块不依赖低层次模块的细节,说白了高层次就是不依赖细节而是依赖抽象。 高层和底层: HttpUtils 1, IHttpRequest 2, OKHttpRequest 3(具体的细节), XUtilsHttpRequest 4(具体的细节)。 高层(依赖抽象) 1 2, 底层 3 4 高层HttpUtils 只依赖底层的抽象接口 IHttpRequest, 没有依赖具体的细节3或4 2.5 接口隔离原则: > 英文:Interface Segregation Principle 定义:类间的依赖关系应该建立在最小的接口上。接口隔离原则将非常庞大、臃肿的接口拆分成为更小的和更具体的接口, 这样客户将会只需要知道他们感兴趣的方法。 接口隔离原则的目的是系统解开耦合,从而容易重构、更改和重新部署,让客户端依赖的接口尽可能地小。(接口拆分,单接口) 上面的这个五个原则 其实都更接口和抽象有关 (面向抽象和面向接口) // Closeable接口,只有close方法。java.io.Closeable.java ``` // 改造前 if(mInStream!=null){ try { mInStream.close(); } catch(IOException e) { e.printStackTrace(); } } // mOutStream/mSocket... ``` ``` // 中断连接 private void breakConnection() { mReadFlag = false; close(mInStream); // 关闭输入流 close(mOutStream); // 关闭输出流 close(mSocket); // 关闭Socket } // 关闭Closeable. 避免传统写法,有一堆的代码。 private void close(Closeable closeable) { if(closeable != null) { try { closeable.close(); } catch(IOException e) { e.printStackTrace(); } } } ``` 2.6 迪米特原则:跟单一职责很像。 > 英文:Law of Demeter 定义:一个对象应该对其他对象有最少的了解,调用者也是比较关注的。 缓存: 常用缓存,经常使用的接口和功能,eg 首页;内存、数据库、硬盘 不经常使用的缓存,eg 个人信息。硬盘中。 其他: > 泡在网上的日子,android示例代码。XSnow