31天重构指南之二十:提取子类

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

当你的基类中存在一些方法不是所有的子类都需要访问,你想将它们调整到子类中时,这个重构会很有用。我举一个简单的例子,我们想要一个Registration类用来处理学生选课的信息。

   1: public class Registration
   2: {
   3:     public NonRegistrationAction Action { get; set; }
   4:     public decimal RegistrationTotal { get; set; }
   5:     public string Notes { get; set; }
   6:     public string Description { get; set; }
   7:     public DateTime RegistrationDate { get; set; }
   8: }
 
但是当Registration类开始工作后,我们意识到我们会在两种不同的上下文中使用Registration类,NonRegistrationAction和Notes只有在我们处理未
注册情况下才用到。所以我们将NonRegistration和Notes提到独立的NonRegistration类中。
   1: public class Registration
   2: {
   3:     public decimal RegistrationTotal { get; set; }
   4:     public string Description { get; set; }
   5:     public DateTime RegistrationDate { get; set; }
   6: }
   7:  
   8: public class NonRegistration : Registration
   9: {
  10:     public NonRegistrationAction Action { get; set; }
  11:     public string Notes { get; set; }
  12: }
 
原文链接:http://www.lostechies.com/blogs/sean_chambers/archive/2009/08/20/refactoring-day-20-extract-subclass.aspx

你可能感兴趣的:(重构)