但从程序员编码实现的层面看,它实际上是这样的:
这个设计在最初的版本没有任何问题,使用继承扩展管理对象的接口能力,但仅仅过了两个版本,项目组PL说实在撑不下去了:增加一个接口,需要修改200多个地方,如果再过一个版本,估计要修改400多个地方了。
后来我把它改成这个样子,使用聚合消除了耦合:
从代码实现层面看,在功能刚开始开发时,这两个设计区别不是很大,但随着系统演进、越来越多的功能加入,继承关系带来的耦合会导致模块之间关系越来越复杂,牵一发而动全身,终究有一天哪怕只做很小的改动,也将成为压死骆驼的最后一根稻草。
这次重构的成果是代码量由43K减少到15K,扩展新的接口能力不再需要修改已有代码。我想,这或许就体现了码农和程序员的区别吧。
建立知识体系
1.Android高级架构师筑基技能
内容
-
java泛型
-
java注解
-
并发编程
-
数据传输与序列化
-
java虚拟机原理
-
反射与类加载
-
高效IO
2.Android框架体系架构
内容
-
高级UI晋升
-
Android组件内核
-
大型项目必备ipc
-
数据持久化
-
framework内核解析
3.全方面性能调优
-
内容;
-
设计思想与代码质量优化
-
程序性能优化
-
开发效率优化
4.设计思想解读开源框架
内容
-
热修复设计
-
插件后框架解读
-
组件化框架设计
-
图片加载框架
-
网络访问框架设计
-
rxjava响应式编程框架设计
-
IOC架构设计
-
Android组件架构jetpack