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