首页 > 其他 > 详细

重构8-Replace Inheritance with Delegation(委托替换继承)

时间:2016-08-19 09:58:51      阅读:282      评论:0      收藏:0      [点我收藏+]

继承的误用十分普遍。它只能用于逻辑环境,但却经常用于简化,这导致复杂的没有意义的继承层次。看下面的代码:

public class Sanitation{ 
public String WashHands(){
return "Cleaned!";
}
}
public class Child extends Sanitation{}
在该例中,Child并不是Sanitation,因此这样的继承层次是毫无意义的。我们可以这样重构:在Child的构造函数里实现一个Sanitation实例,并将方法的调用委托给这个实例。如果你使用依赖注入,可以通过构造函数传递Sanitation实例,尽管在我看来还要向IoC容器注册模型是一种坏味道,但领会精神就可以了。继承只能用于严格的继承场景,并不是用来快速编写代码的工具。
public class Sanitation {
public String WashHands() {
return "Cleaned!";
}
}
public class Child {
private Sanitation Sanitation;//getter setter
public Child() {
Sanitation = new Sanitation();
}
public String WashHands() {
return Sanitation.WashHands();
}
}
 





重构8-Replace Inheritance with Delegation(委托替换继承)

原文:http://www.cnblogs.com/jgig11/p/5786315.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!