1.抽象方法和非抽象方法
如果在类中定义了抽象方法,就是强制非抽象子类去实现。这样写的好处就是可以提醒子类需要复
写哪些方法,但是抽象方法不易过多,不需要强制实现的方法不要抽象化。
如果在类中定义了非抽象方法,可以给一个默认的实现,子类可以选择不复写,采用父类默认的实
现,也可以复写自定义实现。
应用场景:
抽取了一个带ListView的BaseListFragment,后来又有需求,需要一个带头的ListView的
Fragment,那么,就没有必要再写一个类继承BaseListFragement了,况且继承了ListView的初始化已经
完成了,没法再加一个头。
所以直接在BaseListFragment里定义一个方法返回头视图,默认将方法返回值至为null,在listView
初始化的时候,将方法返回值添加到listview的头部,不为空就添加到头部。
2.关于抽象的方法在哪儿被调的问题
既然抽了方法,肯定在父类里的某个地方要让其执行。
如果父类有自己的生命周期方法,会自动执行一些方法,在这些方法里可以抽出方法。
如果父类没有自己的生命周期方法,那么调用抽取的方法的父类方法要记得手动去调用。
3.关于怎么抽取的问题
情景1:抽象适配器,适配器的的抽象方法调用适配器所在父类的方法,父类的这个方法再抽象让
子类去实现。如我的开源中国带indicator的框架就是这么抽取的。
这种方式就是实现了方法的抽象和转移,将内部的抽象转移成父类的抽象。
4.关于电脑模型
其实编程和现实是息息相关的,如电脑和各个零部件就是抽取的具体体现,各个零部件相互配合,但
是又没有焊死在一起,这就是降低了耦合度。
程序的框架包括界面框架、网络加载框架,框架在抽取的时候应该降低它们之间的依赖性。
时间: 2024-10-07 02:06:41