0

在我的办公室,我们使用 Java、Apache Wicket。现在熟悉 Wicket 的人可能知道这个SpringBean注解了。对于那些不知道的人,您可以将其视为 Wicket 与 Spring 通信的方式。当一个类继承类似WebPageor的 wicket 类Panel时,spring is 依赖项会自动注入。但是有一种方法可以明确告诉 Spring 注入依赖项,如果它不是 wicket 组件的子类,它是

Injector.get().inject(this);

它就像一把瑞士刀。

现在让我们进入正题。最近我看到我的同事正在研究一个使用数据库的类(并且绝对独立于检票口),他抱怨得到一个 NullPointer,我告诉他他正在使用SpringBean注释并且因为他没有使用检票口类作为父类,他必须告诉 spring 注射,或者使用瑞士刀。

相反,他只是让类扩展WebPage了代表网页的类。当我告诉他这不是正确的方法时,因为该课程与 WebPage 课程无关,他说这没关系,因为它使事情起作用,他也会在其他地方使用它。

我的问题是扩展一个类是否正确,即使它不是为那些东西制作的?

4

3 回答 3

4

只有当一个类与该类具有“是”关系时,它才应该扩展。从http://www.w3resource.com/java-tutorial/inheritance-composition-relationship.php#sthash.sOckIrpz.dpuf中对“是”关系的一个很好的解释

在面向对象编程中,IS-A的概念是完全基于继承的,可以分为类继承和接口继承两种。这就像说“A是B类型的东西”。例如,Apple 是 Fruit,Car 是 Vehicle 等。继承是单向的。例如,房屋是建筑物。但建筑不是房子。

于 2013-09-14T16:48:39.090 回答
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
}
于 2013-09-14T16:53:08.650 回答
1

绝对不是,那样的决定会在以后回来伤害你。这家伙确实意识到在其他地方使用它的决定实际上使事情变得更糟而不是更好。

您需要挑选某人作为该项目的代码警察,就我个人而言,我不会推荐任何一个具有这种能力的角色。

于 2013-09-14T17:06:39.447 回答