重构第20天 提取子类(Extact SubClass)

理解:提取子类就是把基类中,不是所有子类或者只有少数子类用到的方法,提取出来,调整到子类中去。

详解:下面的代码中我们用到一个单一的类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类,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     }

这样也满足面向对象五大原则之一的单一职责。同时也让类的结构变得更加清晰,增强了可维护性。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值