概念:本文中的“提取父类”是指类中有一些字段或方法,你想把它们提取到父类中以便同一继承层次的其它类也可以访问他们,这个和之前的很多重构有异曲同工之处。

正文:Dog 类中的EatFood和Groom有可能被其他类用到,因为他们都是动物的一些公有性质,所以这个时候我们就会考虑对它进行提炼。

namespace LosTechies.DaysOfRefactoring.ExtractSuperclass.Before{public class Dog{public void EatFood()        {// eat some food}

public void Groom()
{
// perform grooming
}
}
}

代码如下所示,提取了Animal 方法来封装公用的EatFood和Groom类,从而使其他继承了Animal 类的子类都可以使用这两个方法了。

namespace LosTechies.DaysOfRefactoring.ExtractSuperclass.After{public class Animal{public void EatFood()        {// eat some food}

public void Groom()        {// perform grooming}    }

public class Dog : Animal{    }}

总结:这个重构是典型的继承用法,很多程序员都会选择这样做,但是要注意正确的使用,不要造成过度使用了继承,如果过度使用了,请考虑用接口、组合和聚合来实现。

转载于:https://www.cnblogs.com/ywsoftware/archive/2013/02/05/2892603.html

31天重构学习笔记17. 提取父类相关推荐

  1. 31 天重构学习笔记9. 提取接口

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

  2. 31天重构学习笔记19. 提取工厂类

    概念:本文中的"提取工厂类"是指如果要创建的对象很多,则代码会变的很复杂.一种很好的方法就是提取工厂类. 正文:一般来说我们需要在代码中设置一些对象,以便获得它们的状态,从而使用对 ...

  3. 31 天重构学习笔记索引

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

  4. 31天重构学习笔记下载

    前言 前两天写了一篇程序猿也爱学英语(上),有图有真相的文章,写作那篇文章只是自己一时兴起,或者说是自己的兴趣使然.文中的观点只是自己的学习心得和体会,属一家之言且鉴于本人不是学英语出身,所以也肯定有 ...

  5. 31 天重构学习笔记28. 为布尔方法命名

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

  6. 31 天重构学习笔记5. 提升字段

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

  7. 31 天重构学习笔记29. 去除中间人对象

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

  8. 31天重构学习笔记3. 提升方法

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

  9. 31 天重构学习笔记14. 分离职责

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

最新文章

  1. java循环练习:水仙花数
  2. mysql经典书籍--MySQL 必知必会
  3. [Google Guava] 2.1-不可变集合
  4. 美团配送A/B评估体系建设与实践
  5. robot1,Mechanical structure
  6. JavaFX如何将WritableImage转换为Image
  7. android 波斯文排序,android 阿拉伯,波斯字符串从右到左显示问题
  8. 织梦首页header实现会员的登录及会员状态显示
  9. 二层交换机与三层交换机区别
  10. [Python] 七段数码管绘制
  11. 【重识前端】闭包与模块
  12. 【考研英语语法】一般现在时练习题
  13. 第十章:手机摄像头实现光学变焦的七种方法
  14. IT人士常喝点菊花茶泡枸杞
  15. 一行代码卖出570美元, 天价代码的内幕
  16. CICD之 gitlab和gtilab runner
  17. Symentec赛门铁克企业型SSL证书好不好
  18. Centos8、Centos7解决Ens33网卡不显示IP地址的问题。
  19. Mysql数据库简单介绍
  20. 汽车销售管理系统 c语言版 课程设计,汽车销售管理系统C语言版.doc

热门文章

  1. 李飞飞最新研究成果!斯坦福正在用算法判断政治倾向
  2. [译] 我多希望在我学习 React.js 之前就已经知晓这些小窍门
  3. HTTP请求解析过程 (简单概括)
  4. 前台提交数据到后台为乱码问题解决方式
  5. 用C#编写一个进程外的COM组件示例代码讲解
  6. Java Web文件下载
  7. 烂泥:nagios学习(四):pnp4nagios图形化绘制nagios数据
  8. 基于java WebDriver +TestNG 框架环境设置
  9. 摘来的去视频网站的广告方法
  10. iphone @selector带参数问题