在我的办公室,我们使用Java,Apache Wicket。现在那些熟悉Wicket的人可能知道
SpringBean
注释。对于那些不这样做的人,您可以将其视为Wicket与Spring沟通的方式。当一个类继承像WebPage
或Panel
这样的wicket类时,spring会自动注入依赖项。但是有一种方法可以告诉Spring注入依赖,如果它不是wicket组件的子类,那么
Injector.get().inject(this);
它像瑞士刀一样工作。
现在让我们谈谈。最近我看到我的同事在一个与数据库一起工作的课程(并且完全独立于wicket)他抱怨获得NullPointer,我告诉他他正在使用SpringBean
注释&由于他没有将检票口作为父母班级,所以他必须告诉泉水注射,或者使用瑞士刀。
相反,他只是使类扩展WebPage
类代表一个WebPage。当我告诉他这不是正确的方式时,由于班级与WebPage课程无关,他说这样做没关系,因为它使得这个东西起作用,他也会在其他地方使用它。
我的问题是,扩展一个类是否正确,即使它不是为那些东西制作的?
答案 0 :(得分:4)
只有当“与该类有关系时,才应扩展该类。从http://www.w3resource.com/java-tutorial/inheritance-composition-relationship.php#sthash.sOckIrpz.dpuf
获得的“是一种”关系的一个很好的解释在面向对象编程中,IS-A的概念完全基于 on Inheritance,可以是两种类型的Class Inheritance或 接口继承。这就像是说“A是B型的 事情“。例如,Apple是水果,汽车是车辆等。 继承是单向的。例如,House是一栋建筑。但 建筑不是房子。
答案 1 :(得分:1)
class Fruit{
}
class Apple extends Fruit{
//as it is a fruit
}
class Potato extends Fruit{
//No it is not a fruit so it should not extend it
}
答案 2 :(得分:1)
绝对不是,这样的决定,会在以后回来并伤害你。这家伙确实意识到在其他地方使用它的决定实际上会让事情变得更糟而不是更好。
你需要选择一个人作为项目的代码警察,我个人不会推荐任何一个这个级别的角色。