今天要说的重构来自于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