当前位置: 首页 > 面试题库 >

实体类的正确设计。需要建议

东方震博
2023-03-14
问题内容

例如,我有实体类User

public class User
{
  private long id;
  private String name;

  // setters and getters
}

接下来,我添加新的实体类: Comment

public class Comment
{
private long id;
private String comment;

// setters and getters
}

接下来,我可以添加越来越多的实体类。

而且,此刻我想:我可以/必须以逻辑结构绑定/连接我的实体类,还是没有?

我的意思是说?我尝试解释一下:

要点1:所有这些类:UserComment以及其他- POJO

想法1:需要通过接口或抽象类对此类进行逻辑绑定。

第2点:我看到,所有实体类都有相同的方法:getIdsetId()

想法2:需要避免在所有类中声明此方法。

我的解决方案:

添加界面BaseEntity

public interface BaseEntity
{
public long getId();
public void setId(long id);
}

添加所有实体类必须实现此接口

结果,我们逻辑上连接了所有实体类。并且我们保证每个实体类的实现getId()setId()方法

但是此解决方案无法解决带有多个声明getId和的问题setId

一种解决方案是创建常规BaseEntity类:

    public class BaseEntity
    {
      private long id;
      public long getId() {return this.id};
      public void setId(long id) {this.id = id;};
    }

并且所有实体类都必须扩展BaseEntity类。

嗯,听起来不错:)

但是,使用当前的实现-用户可以创建即时的BaseEntityClass。 这有意义吗? 我可以创建一个类BaseEntity吗?

也许,好的解决方案将此类标记为abstract?你怎么看?

如果您同意我之前的所有步骤:

我还有最后一个问题:

类之间的通信必须基于接口。但是我没有实体的接口。将来会为我制造问题吗?

谢谢。


问题答案:

是的,使您的基本实体成为抽象类,然后让其他人对其进行扩展。

public abstract class BaseEntity
    {
       private long id;
       public long getId() {return this.id};
       public void setId(long id) {this.id = id;};
    }

通常,应该始终对接口进行编程,而不是对实现进行编程。



 类似资料:
  • 我的问题是我应该让(板中的凹陷孔)成为的属性还是应该让成为的属性 我有以下工程分析课程: 然后我有代表各种关节的类 沉头孔仅适用于,但我需要验证用户输入的板材厚度是否大于沉头孔的深度。我只是在底板中将沉头孔设置为null,还是将沉头孔属性放在关节类中更好?或者我应该使用其他模式,比如子类? 我将涂层和材料作为属性添加到每个零件中,因为它太过冗长,无法添加到接头中,例如: 我可能可以让它在任何一种情

  • 我必须给出使用Site Minder的SSO架构的建议。我们几乎没有J2EE应用程序。这些J2EE应用程序设计为在SSO提供者进行身份验证后,当http头包含信息时工作。我们一直保持应用程序SSO提供程序不可知。这意味着我们只依赖SSO提供程序的头。这在RSA作为SSO提供程序的情况下运行良好。 现在SiteMinder提出了另一种架构。请求的流动方式是 带IIS的SiteMinder- 要崩溃,

  • 问题内容: 我一直在花一些时间来学习React,MongoDB和其他与JS Web应用程序相关的工具。对于我创建的一个小型项目,我正在使用此存储库来创建我的玩具应用程序Create no App no build 。在我开发应用程序的过程中,事后我学到了很多与React相关的工具和材料。 我停留的部分是我试图将联系表单的数据提交到MongoDB中,但是到目前为止,我无法将我的应用程序与MongoD

  • 我在应用程序中使用Drools 6.1.0。 我们正计划写一本巨著。包含所有规则的drl文件。 主要有两类规则1。空检查2。业务验证 使用规则流组、激活组和显著性,我计划在将事实添加到会话时管理要执行/触发的规则。 即使用这种方法,解决方案对我不起作用,因为。 假设我有以下内容。drl文件 Drools留档是这样说的:“当插入一个事实时,所有约束都将被评估。来自Drools手册:状态评估不依赖于特

  • 我创建了一个如图所示的按钮布局设计。如何实现不同尺寸屏幕的设计模式?这种布局适合3.7英寸屏幕,但不适合其他屏幕。可能是scrollview是一个选项,但这并不满足我。我怎么能做到呢?有什么帮助吗? 这是我的xml文件

  • 在制作后端服务器之前,我正在设计Restful API。这项服务是小型Instagram,我想知道我的restful设计是否符合REST原则。 认证 创建帐户:POST /auth/user 删除帐户:删除 /auth/user 登录:发布 /auth/session 注销:删除 /auth/session 邮政 < li >加载摘要:获取/发布 < li >创建帖子:帖子/帖子 < li >读取