前言
很多工程师做开发3年甚至5年,到现在都无法自己写出架构代码。归根原因是
1. 架构基础知识匮乏
2. 没有意识停下来思考
我们习惯了搜索引擎带来的便利。工作流程大概是这样的:产品原型需求文档拿到手里,首先根据功能划分模块逐个分析。例如增加了推送模块,多任务下载模块。开始根据业务分析总结出这个功能的特点一二三 -----> 开始搜索 搜索到相似度差不多的Demo,开始植入项目内改造。这种工作方式在我看来有了起点,但没有终点。终点是通过这个模块的开发,最后你学到了什么思想,学到了该语言(Android)有什么样的特性,原来可以这么去实现。尤为重要的一点是总结、提炼出最少的代码,自己做成一个库(jar) 等下次遇到类似功能,直接拿来改造。这样的好处是,你完全了解自己写的代码,自己构建的库,出了问题判断迅速,项目的依赖不会滥用(有的朋友接二手项目,里面的图片库竟然多达3个,重复jar多达7个)。另外特别有利于自己判断比较新的类似jar的优缺点,比如依赖注入框架,11年到17年,我相信每年都或多或少有新的知识出现,那么你不清楚自己手里的jar优缺点,如何去判断新的是否更合适,值得去花费时间学习,花费时间去改造到项目内去,去承担带来的风险。
何为良好的架构? The Clean Architecture 提出
框架独立性 架构尽量不依赖除该语言之外的API库
每层可独立测试 下层完全不知道上层的存在,每一层可单独测试
写架构时时刻告诫自己遵循这俩点,就可以完全写一个设计优美的架构,以上俩点从根本上满足了架构的容易拓展,维护,模块独立,易于测试等特性。并且在一个项目迭代开发过程中,根据需求,不断的调整。来配合自己的项目。
常见架构
MVC MVP MVVM
MVC是经典的设计思想,不同语言的内在限制,导致了结构划分不清晰,职责不明确,代码耦合性高,内聚低。所以MVC衍生出MVP、MVVM。这三种设计不做过多的讨论,大家想必多少有了解
架构技术手段
以Java为例,写架构的人基本功一定没问题的有,反射,泛型,面向接口编程,各种设计模式,这一类人统称为架构师。所以接下来,以该文为开篇,我会逐个去实例讲解这些技术手段。