Android项目重构的一些认识和思考

原创 2015年11月19日 14:55:39

确切的说,本文是一篇读书笔记,阅读了三篇Android重构的文章:

Android项目重构之路:架构篇

Android项目重构之路:界面篇

Android项目重构之路:实现篇



上图是我阅读文章的作者给出的架构层次。一共分为四层:

1、界面层,负责数据显示,依赖于核心层和模型层。

2、核心层,是业务逻辑处理与UI逻辑处理,依赖于接口层和模型层

3、接口层,是网络请求相关,向服务器获取数据,依赖与模型层

4、模型层,是网络数据的实体类

       接口层与核心层通过接口低耦合,核心层与界面层通过接口低耦合。接口的使用涉及到三个方面:接口的调用,接口的实现,接口的注入。一个方法或一个类在使用的时候,调用形式是接口类,和具体实现的逻辑是实现类,不同 的实现类有不同的逻辑,但是调用的形式只有接口类这一个。java的特性,让当调用接口类的方法时,实际是运行对应实现类里的方法。因而,代码书写上,几乎不做改变(对被依赖的类而言),而具体的业务逻辑写在了实现类里,可以根据需求新建不同的实现类或修改。回到这个架构上来,界面层与核心层通过接口耦合,如果核心层业务逻辑改变了,知识改变了接口的实现类,接口并不变,界面层的代码可以保持不变。

      android-priority-jobqueue框架用于接口层,EvenBus和butternife放在界面层。


     数据获取,数据处理,数据展示直接写在Activity或Fragment里,那么activity和fragment就会显得很重,代码量很大,不利于维护,而引入架构后,就把数据的获取,数据的处理单独写在其他模块或类里,然后在Activity或Fragment里调用即可。而数据的展示,必须写在Activity或Fragment,不过现在安卓出现了Bind Date技术,可以在视图里绑定数据了。这样数据的展示也可以不必写在Activity或Fragment里。就能大大减少Activity或Fragment的代码量。此时Activity和Fragment扮演的角色就是控制者,管理者,是交互的管理中枢。


       我想,我们之所以引入各种框架,就是要把Activity和Fragment的代码量降低下来,形成一个个单一的职责或者功能模块,高级模块和上层职责并不要知道太多低级模块或下层职责的具体实现,建立依赖时尽量沿着继承体系来,对朋友类依赖。在这样的过程中,有共有的变化的部分抽象出来,做成接口或者抽象类/抽象方法(面向接口的编程),同时每个接口要对应单一的功能,接口方法的多少取决于项目所合适的粒度,过多和过少都不是好的过程。在这个过程中,会形成继承体系,以便更好的管理,子类尽量不要覆盖父类的方法,子类重载父类的方法时,方法参数要比父类的更宽松,而子类实现父类的抽象方法时,返回的数据类型要比父类的更严苛。在这个过程中,努力做到高内聚,低耦合,有利于通过新增类,增加代码的方式来满足需求的变化,而不是通过修改原来的代码来满足新需求。



如何确定抽象部分或者说哪些部分需要抽象出来?

答:共有的、变化的部分需要抽象出来。当我们在开发项目的时候,预估到需求变化的方向,这种变化存在重复性,把这重复性中相似阶段(这个阶段常表现为变化的)做成抽象,而不同的阶段写成细节和具体。

       


版权声明:本文为博主原创文章,转载请标明出处.

Android项目重构之路:实现篇

前两篇文章Android项目重构之路:架构篇和Android项目重构之路:界面篇已经讲了我的项目开始搭建时的架构设计和界面设计,这篇就讲讲具体怎么实现的,以实现最小化可用产品(MVP)的目标,用最简单...
  • jianhua0902
  • jianhua0902
  • 2015年11月01日 11:09
  • 2842

android项目重构经验总结

总结 前辈的重构经验 完成这样的重构,需要几个注意点,分享一下 1 一定要在有充分测试代码的前提下重构 2 测试代码的作用是   1 需求固定了   2 保证重构后逻辑不会发生变...
  • JerryWu145
  • JerryWu145
  • 2016年07月17日 21:48
  • 985

重构的几点注意事项

最近又温习了一遍Martin Flower的经典名著《重构:改善既有代码的设计》,感触颇多,应该总结一下: 1. 重构是减缓代码腐化的有效武器 现在很少有软件完全是从0开始开发,也很少有软...
  • hitlion2008
  • hitlion2008
  • 2012年12月15日 11:41
  • 4842

Android 项目代码重构思想总结

代码重构的根本思想是模块化、灵活性、高内聚、低耦合。项目重构完之后,理想的状态是: 项目主工程中,所放的资源、工具类是继承于基础lib工程,但只与该项目相关的,所有与程序业务逻辑程序界面风格等无关的基...
  • ylxbcs
  • ylxbcs
  • 2015年07月20日 11:20
  • 3072

说说什么是重构(二)重构的过程

序 上一篇文章主要是说了说什么是重构,重构都在什么情况下开始。而这篇文章,则主要是讲讲重构的过程中,需要注意哪些东东。还有就是如何进行重构。 背景 说到底,重构无非就是为了让代码更加优...
  • happylee6688
  • happylee6688
  • 2015年05月29日 15:11
  • 2773

重构的认知(一)

重构的认知(一) 一、什么是重构 重构是一种过程:在不改变代码外在行为的前提下,对代码作出修改,以改进程序的内部结构。重构是一种方法:一种经千锤百炼形成的有条不紊的程序整理方法,可以最大限...
  • IDOshi201109
  • IDOshi201109
  • 2016年07月07日 02:46
  • 511

Android项目重构之路:实现篇 读后思考

在上次,我思考了关于结构方面的Android项目重构之路:架构篇 读后思考,那么这次,我在读了Android项目重构之路:实现篇之后,也有了新的收获 由于现在所在的公司比较小,android...
  • YANGDAHUAN
  • YANGDAHUAN
  • 2015年07月18日 12:09
  • 895

对数据结构的一些了解

数据结构:数据结构是为了实现大量数据的有效管理的机制,数据结构有很多种,最具代表性的有一下几种: 1.数组:数组有一维数组、二维数组、三维数组,在我们学习的过程中,很多地方都用到了数组,它可以帮我们...
  • xjf1035158147
  • xjf1035158147
  • 2016年07月25日 08:31
  • 446

软件项目的优化重构的重要性

软件项目开发过程中,许多程序员对程序的优化重构、以及日后的维护重视不够,为实现软件功能疲于奔命,自己负责开发的模块,随着需求的增加、变更,代码更新堆彻,没有很好的优化、组织,导致代码日益膨胀,对今后的...
  • yan_dk
  • yan_dk
  • 2012年06月08日 10:05
  • 561

Android项目重构之路:架构篇

http://keeganlee.me/post/android/20150605   原创文章,转载请注明:转载自Keegan小钢 写于2015-06-19     Android项...
  • u012587637
  • u012587637
  • 2015年07月29日 11:27
  • 736
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android项目重构的一些认识和思考
举报原因:
原因补充:

(最多只允许输入30个字)