文档章节

重构-改善既有代码的设计-处理概括关系(继承)

梦想游戏人
 梦想游戏人
发布于 2016/05/19 14:00
字数 581
阅读 31
收藏 1

处理概括关系(继承)相关重构手法

1.pull up field(字段上移)(2个子类拥有相同的字段。将该字段移到超类中)

2.pull up method(函数上移)(有些函数在各个子类中产生完全相同的额效果。将函数移到超类)

3.pull up constructor body(构造函数本体上移)(你在各个子类中拥有一些构造函数,他们的本体几乎完全一致。在超类中新建一个构造函数,并且在子类构造函数中调用它)

4.push down method(函数下移)(超类中某个函数只和部分子类有关。将这个函数移动相关的那些子类去)

5push down field(字段下移)(超类中某个字段只被部分子类用到。将这个字段移到需要他的子类中去)

6.extract subclass(提炼子类)(类中的某些特性只被某些实例用到。新建一个子类把上面的部分特性移动到子类中)

7.extract superclass(提炼超类)(2个类有相似的特性。为这2个类建立一个超类,将系统特性移到超类)

8.extract interface(提炼接口)(若干客户使用类中的同一子集,或者2个类的接口部分相同。将相同的子类提炼到一个独立接口中)

9.collapse hidearchy(折叠继承关系)
超类和子类区别并不大(将他们合为一体)

10.form template method(塑造模板函数)
你有一些子类,其中相应的某些函数以相同的额顺序执行类似的操作,但各个的细节不同。把相同操作提炼到一个函数并且移动到超类,

11.replace inheritance with delegation(委托取代继承)
某个子类只是用超类冲部分接口,或者根本不需要继承而来的数据(用组合的方式来替代继承,用一个字段来保存超类,调整子类函数,然后去掉继承关系)

12. replace delegation with inheritance(继承取代委托)
你在2个类中使用委托关系,并经常为整个接口 编写许多简单的委托函数(移除这些委托,改为继承关系)
 

 

© 著作权归作者所有

共有 人打赏支持
梦想游戏人
粉丝 38
博文 444
码字总数 127453
作品 0
成都
私信 提问
重构-改善既有代码设计

重构是在不改变软件可观察行为的前提下,对代码作出修改,以改进程序的内部结构。本质上说就是在代码写好后改进它的设计 重构往往意味着不了解软件行为下重构程序 2.在设计前期使用模式常常导...

zhchl2010
2015/12/24
107
0
31 天重构学习笔记8. 使用委派代替继承

摘要:由于最近在做重构的项目,所以对重构又重新进行了一遍学习和整理,对31天重构最早接触是在2009年10月份,由于当时没有订阅Sean Chambers的blog,所以是在国外的社区上闲逛的时候链接过...

技术小甜
2017/11/16
0
0
[读书]读《重构-改善既有代码的设计》

读《重构-改善既有代码的设计》 断断续续,加上过年,花了快2个月吧,把《重构-改善既有代码的设计》读完了,这里总结下。 发现此书背景 读的感觉 知识感触 发现此书背景 这本书是从同事的桌...

zemel
2016/03/07
6
0
31 天重构学习笔记4. 降低方法

摘要:由于最近在做重构的项目,所以对重构又重新进行了一遍学习和整理,对31天重构最早接触是在2009年10月份,由于当时没有订阅Sean Chambers的blog,所以是在国外的社区上闲逛的时候链接过...

技术小甜
2017/11/15
0
0
重构 - 代码整洁之道

作者简介 新茗 蚂蚁金服·数据体验技术团队 前言 之前也介绍过我们团队的前端项目从零开始经历8个月迭代业务代码10万行(仅为产品长期规划需求的20%),至今仍然在不断迭代的过程。 团队成员除...

2018/01/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JS 调用Angularjs 的方法

// 1. 获取 Controllerlet appElement = document.querySelector('[data-ng-controller=MessagesCtrl]');let scope = angular.element(appElement).scope();// 2. 调用方法scope.l......

Moks角木
22分钟前
0
0
dubbo+zookeeper与 eureka的区别

CAP CAP 原则指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得 在分布式架构里, P必须有 Zookeeper保证C P 当...

群星纪元
31分钟前
0
0
云计算之边缘计算大势所趋

如果说边缘计算是公同认定的目标,那么我们看到,不同类型的厂商基于自身的特点,会从不同的起点、沿着不同的路径,向这个目标奔跑。上次参加阿里云的一次活动,看到他们将边缘计算的厂商分成...

linuxCool
36分钟前
0
0
前端通过后端传过来的'\n' ,''等字符串换行失败问题

后台推送换行符 '\n' 或 '<br/>' 等字符串到前台不会换行 详细描述 后台逻辑处理返回String字符串,其中包含\n或<br/>等换行符号,但是前端渲染时候却并没有真正的换行 也尝试了大佬的各种 ...

下次用oschina
43分钟前
2
0
volatile能保证有序性吗?

在前面提到volatile关键字能禁止指令重排序,所以volatile能在一定程度上保证有序性。   volatile关键字禁止指令重排序有两层意思:   1)当程序执行到volatile变量的读操作或者写操作时...

无精疯
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部