之前有说过尽量少用继承
这个方法就是讲这个的
旧的代码:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
public class Sanitation
{
public string WashHands()
{
return "Cleaned!";
}
}
public class Child : Sanitation
{
}
重构后的代码:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
public class Sanitation
{
public string WashHands()
{
return "Cleaned!";
}
}
public class Child
{
private Sanitation Sanitation { get; set; }
public Child()
{
Sanitation = new Sanitation();
}
public string WashHands()
{
return Sanitation.WashHands();
}
}
在这个例子中,Child并不是Sanitation(is - a),两者没有很强烈的关系,所以不应该强行用继承
这里的委托不是.net里的关键字delegate,应该是说把非关本类的方法交给其他类来出来,委托他人完成
这里的委托两个字来自:31 Days of Refactoring Refactoring Day 8 : Replace Inheritance with Delegation