繁体   English   中英

Java继承-类型子类

[英]Java inheritance — type subclasses

这更多是关于如何设计概念的

  1. Post类应作为具有所有公共属性的基本类工作-具体类
  2. 问与答扩展了Post类。 它们具有Post的所有属性以及特定于它们的属性。
  3. 可以有不同类型的问题,例如UserAskedQuestion或BookQuestion-再次扩展了Question(具体类)----这里是3级继承(UserAskedQuestion-> Question-> Post)

    这是我想要实现的目标:所有这些实体都存储在数据库中,我想从那里获取(可以是cassandra或Mysql),因此想法是,用户的一行介绍将保存为帖子,如果这样用户提出问题,它将被存储为userAskedQuestion。 但是现在,如果我想知道该用户发布的所有帖子,则应同时包含该帖子(一个衬里)以及(询问的问题)

问题:

  1. 拥有3级继承是件好事吗? 因为我已经读了很多书,所以继承会使代码复杂化,但是目前我无法找到任何其他解决方案。
  2. 我应该如何尝试实现它,以便如果我获取帖子,则应获取所有帖子,问题/答案及其子类型,如果我获取问题,则应获取所有问题和问题子类型?
  3. 如果不是继承,还有其他方法可以实现这种行为吗?

问题1

是的,当然,多级继承将为您提供更好的设计。 我认为,宁可让事情复杂化,也可以为您提供更高的High CohesionLess Coupling 通过这种设计,您将获得GRAPS Information Expert模式。

问题2

请参阅带有示例的Java中的示例多级继承


评论问题的答案:从DB作为Post类获取对象Post您可以使用Java Java Doc的 instanceof运算符:类型比较运算符instanceof

public void doSomething(Post param) {
  if( param instanceof Question ) {
    System.out.println("param is a Question ");
  }
  else if( param instanceof Answer) {
    System.out.println("param is an Answer");
  }
 // Even you can check for whether its UserAskedQuestion or BookQuestion also
}

我认为, Decorator模式是必经之路。

使发布成为界面。 作为实现Post的抽象类的问答。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM