关于重构的一些思想

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

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

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

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

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

应用场景:

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

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

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

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

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

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

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

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

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

3.关于怎么抽取的问题

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

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

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

4.关于电脑模型

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

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

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

时间: 2024-10-07 02:06:41

关于重构的一些思想的相关文章

Android 项目代码重构思想总结

代码重构的根本思想是模块化.灵活性.高内聚.低耦合. Android 项目代码重构: 将与业务逻辑无关的公共基本资源.工具类等等抽取到一个lib 工程中,主程序中只放与业务逻辑相关的代码和工具类: 1.将公共资源类进行抽取,包括: string.xml color.xml styel.xml drable  中自定义的shap .selector.anim 这些资源基本是和程序业务逻辑无关的,将其放到主工程中只会增加代码量影响对程序业务逻辑的理解. 工程项目所特有的资源可以采取继承于lib库工程

移动前端重构实战系列

移动前端重构实战系列:5-7章 2016-07-16 07:16 (本文系来自腾讯imweb团队 结一大大 关于移动端重构经验以及思想的实战系列,推荐点击左下角的阅读原文.) ”本系列教程为实战教程,是自己移动端重构经验及思想的一次总结,也是对sheral UI的一次全方位剖析,首发在imweb和w3cplus两大站点及“前端Talk”微信公众号,其余所有标注或没有标注来源的均为转载.“ ——imweb 结一 5.Form form 大概要实现的效果如下图(具体demo可见sheral form

用一个玩具例子说明基于视频的超分辨率重建的基本思想

本文是基于知乎上的一个答案 基于视频的超分辨率重建是指从许多帧连续的低分辨率图像中重建出一幅高分辨率的图像,并且这幅高分辨率的图像能够显示出单帧低分辨率图像中丢掉的细节,比如下面是一个2秒视频(176x144)中的一帧: 为了方便和分辨率重建之后的图片对比,用Nearest Neighbor放大到了704x576.而下面是重建后的超分辨率图像: 可以看到,许多丢失的细节被重建了,这就是基于视频序列的超分辨率重建. 接下来用一个玩具例子来说明基本原理,首先打开画图板,写下一个线条分明,软绵无力,面

系统重构的道与术

最近参与了很多重构项目,有以提高服务器资源利用率为目标的Gateway网关.AMAPS等服务的重构,也有以提升架构合理性和研发效率为目标的共享业务服务化拆分,借此机会把相关内容梳理一下,是分享更是自我总结和学习.准备以重构工作中容易产生误区的地方或容易被忽视的重点来聊聊,既不重复网上千篇一律的各种方案资料,也对重构工作有参考价值. 什么是“道和术”?个人简单的理解,道就是思想,术是方法.可谓有道无术,术尚可求也:有术无道,止于术.分别从重构的基本思路和原则,以及常见重构方案的应用来分别讲讲系统重

Yarn 详解

唐 清原, 咨询顾问 简介: 本文介绍了 Hadoop 自 0.23.0 版本后新的 map-reduce 框架(Yarn) 原理,优势,运作机制和配置方法等:着重介绍新的 yarn 框架相对于原框架的差异及改进:并通过 Demo 示例详细描述了在新的 yarn 框架下搭建和开发 hadoop 程序的方法. 读者通过本文中新旧 hadoop map-reduce 框架的对比,更能深刻理解新的 yarn 框架的技术原理和设计思想,文中的 Demo 代码经过微小修改即可用于用户基于 hadoop 新

Hadoop新MapReduce框架Yarn详解

简介 本文介绍了Hadoop自0.23.0版本后新的MapReduce框架(Yarn)原理,优势,运行机制和配置方法等,着重介绍新的yarn框架相对于原框架的差异及改进,并通过Demo示例详细介绍了在新的Yarn框架下搭建和开发Hadoop程序的方法.读者通过本文中新旧Hadoop MapReduce框架的对比,更深刻理解新的yarn框架技术与那里和设计思想,文中的Demo代码经过微小修改既可用于用户基于Hadoop新框架的实际生产环境. Hadoop MapReduceV2(Yarn)框架简介

Hadoop MapReduceV2(Yarn) 框架

Hadoop MapReduceV2(Yarn) 框架简介 原 Hadoop MapReduce 框架的问题 对于业界的大数据存储及分布式处理系统来说,Hadoop 是耳熟能详的卓越开源分布式文件存储及处理框架,对于 Hadoop 框架的介绍在此不再累述,读者可参考 Hadoop 官方简介.使用和学习过老 Hadoop 框架(0.20.0 及之前版本)的同仁应该很熟悉如下的原 MapReduce 框架图: 图 1.Hadoop 原 MapReduce 架构 从上图中可以清楚的看出原 MapRed

Hadoop 新 MapReduce 框架 Yarn 详解

原 Hadoop MapReduce 框架的问题 对于业界的大数据存储及分布式处理系统来说,Hadoop 是耳熟能详的卓越开源分布式文件存储及处理框架,对于 Hadoop 框架的介绍在此不再累述,读者可参考 Hadoop 官方简介.使用和学习过老 Hadoop 框架(0.20.0 及之前版本)的同仁应该很熟悉如下的原 MapReduce 框架图: 图 1.Hadoop 原 MapReduce 架构 从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路: 首先用户程序 (JobCli

java面试第十八天

软件开发流程: 1.可行性分析 2.需求分析->开发测试 3.概要设计->分隔模块,定义框架等 4.详细设计->类设计.接口设计 5.编码 6.测试 7.部署 8.维护 单元测试: 要求: 要有边界值的分析,主要针对分支语句的临界点 语句覆盖,保证写的任何语句都要运行到 判定覆盖,所有判断的地方都要覆盖掉 条件覆盖,保证所有条件都要覆盖掉 路径覆盖,所有分支都要测试到 步骤: 1.针对每个类写一个TestCase,在setUp方法中初始化要测试类,在tearDown方法中将测试类置为nu