IMZRH的日志

努力成为一个有用的人

导航

31天重构指南之二十一:合并继承

Posted on 2009-10-15 14:45  张荣华  阅读(415)  评论(1编辑  收藏  举报

今天要说的重构来自于Martin Fowlers的模式目录,你可以在这里找到它。

昨天我们说的“提取子类”重构是指当基类中的一个责任不被所有的子类所需要时,将这些责任提取到合适的子类中。而我们今天所说的“合并继承”重构一般用在当我们觉得不需要子类的时候。

   1: public class Website
   2: {
   3:     public string Title { get; set; }
   4:     public string Description { get; set; }
   5:     public IEnumerable<Webpage> Pages { get; set; }
   6: }
   7:  
   8: public class StudentWebsite : Website
   9: {
  10:     public bool IsActive { get; set; }
  11: }
 
 上面的代码中StudentWebSite子类除了有一个属性用来说明网站是否是活动的外没有别的责任,在这种情形下我们意识到IsActive属性可以应用到所有的
网站,所以我们可以将IsActive属性上移到基类中,并去掉StudentWebSite类。
   1: public class Website
   2: {
   3:     public string Title { get; set; }
   4:     public string Description { get; set; }
   5:     public IEnumerable<Webpage> Pages { get; set; }
   6:     public bool IsActive { get; set; }
   7: }
 

原文链接:http://www.lostechies.com/blogs/sean_chambers/archive/2009/08/21/refactoring-day-21-collapse-hierarchy.aspx