关于重构的一些思想

DRY原则:Don't Repeat Yourself (摘自wikipedia


OOA和OOD的作用及其区别 http://blog.sina.com.cn/s/blog_72ed42d401015y5c.html



1.抽象方法和非抽象方法

如果在类中定义了抽象方法,就是强制非抽象子类去实现。这样写的好处就是可以提醒子类需要复

写哪些方法,但是抽象方法不易过多,不需要强制实现的方法不要抽象化。


如果在类中定义了非抽象方法,可以给一个默认的实现,子类可以选择不复写,采用父类默认的实

现,也可以复写自定义实现。

应用场景:

  抽取了一个带ListView的BaseListFragment,后来又有需求,需要一个带头的ListView的

Fragment,那么,就没有必要再写一个类继承BaseListFragement了,况且继承了ListView的初始化已经

完成了,没法再加一个头。

  所以直接在BaseListFragment里定义一个方法返回头视图,默认将方法返回值至为null,在listView

初始化的时候,将方法返回值添加到listview的头部,不为空就添加到头部。


2.关于抽象的方法在哪儿被调的问题

  既然抽了方法,肯定在父类里的某个地方要让其执行。  

  如果父类有自己的生命周期方法,会自动执行一些方法,在这些方法里可以抽出方法。

  如果父类没有自己的生命周期方法,那么调用抽取的方法的父类方法要记得手动去调用。


3.关于怎么抽取的问题

  情景1:抽象适配器,适配器的的抽象方法调用适配器所在父类的方法,父类的这个方法再抽象让

      子类去实现。如我的开源中国带indicator的框架就是这么抽取的。

      这种方式就是实现了方法的抽象和转移,将内部的抽象转移成父类的抽象


4.关于电脑模型

  其实编程和现实是息息相关的,如电脑和各个零部件就是抽取的具体体现,各个零部件相互配合,但

  是又没有焊死在一起,这就是降低了耦合度。


  程序的框架包括界面框架、网络加载框架,框架在抽取的时候应该降低它们之间的依赖性。


    


如果要写出资深的重构代码,必需要“精通”以下的知识:

  1.反射

  2.注解

  3.泛型

   Java泛型详解

   http://blog.csdn.net/jinuxwu/article/details/6771121

   

  4.自定义

  5.其它,肯定有,尚未总结。  




对于别人重构的框架,应该如何去用的问题:

  1.抽象类,肯定是要实现它示实现的方法。写逻辑就是对抽象方法的具体实现。


  

你可能感兴趣的:(android经验)