如何在java项目中设计模型类

时间:2016-04-21 23:43:16

标签: java model

我是jsp的新手。我想做一个测试项目来熟悉它。

我选择做的项目是设计一个人们可以注册并为自己制作简历的网站。

每个注册的人都可以定义他之前曾参与过的一些项目。

例如,如果我使用用户名 SHT 注册并定义 PROJECTA PROJECTB ,则表示这些项目应显示在我的简历。

顺便说一句,我想使用MVC设计。

我的问题是,当我想设计模型类时,我不知道哪种方法最适合以下场景:

1-我首先想到的是,我可以为 Users 创建一个包含 UserId UserName 的类, ...
我需要 Projects 的另一个类,其中包含 ProjectName ProjectId ,还有 UserProject 的另一个类 > UserId ProjectId ,以便能够找到属于特定用户的项目。

在这个例子中,我有一个User类的用户对象,UserId为1,UserName为'SHT'。

  

我有两个来自项目类的对象:

     

OBJECT1 {ProjectId = 1,ProjectName =“PROJECTA”}

     

OBJECT2 {ProjectId = 2,ProjectName =“PROJECTB”}

     

我再次从UserProject获取这些对象:

     

OBJECT1 {UserId = 1,ProjectId = 1},

     

OBJECT2 {UserId = 1,ProjectId = 2}

2-第二种方式,我可以为 Projects 创建一个包含以下字段的类: ProjectId ProjectName 。我还为 Users 添加了另一个类,其中包含以下字段: UserId UserName 以及用户项目列表。

例如,我有这样的方式:

  来自Projects的

2个对象:

     

OBJECT1 {ProjectId = 1,ProjectName =“PROJECTA”}

     

OBJECTB {ProjectId = 2,ProjectName =“PROOJECTB”}

     

来自用户的对象:

     

USER1 {UserId = 1,UserNAme =“SHT”,ListOfProjects = {ProjectId = 1,ProjectId = 2}}

这是我想到的两种方式。但我不知道在这种情况下哪一个更好。 我想也许第一种方式更好,因为后来我可能想要添加每个用户可以注册某些项目的功能,每个用户都可以拥有技能列表等等。有了这些功能,我想第一种方式可能更容易处理。

任何人都可以帮我找出哪一个更好吗?

如果您认为有更好的方法,我将非常感激。

提前感谢您的关注。

1 个答案:

答案 0 :(得分:0)

我想说你要判断解决方案有3点。

  • 存储空间
  • 项目的搜索时间 - >用户
  • 用户的搜索时间 - >项目

对于两个解决方案,存储空间渐近相等,对于解决方案1中的每个UserProject对象,解决方案2中某个用户的ListOfProjects中有一个项目。

做项目 - >用户搜索他们也表现得同样好,因为在解决方案2中,您必须遍历每个用户并查看他们所处理的项目与解决方案1中的每个UserProject相同。

为了做一个用户 - >项目搜索解决方案2更快,因为它可以直接从具有答案的用户获取列表。

我自己也会提出另外两种解决方案,我们称之为解决方案3和解决方案4.

解决方案3:与解决方案2相同,但反过来说,项目会存储使用它们的用户列表。

解决方案4:解决方案2和解决方案3相结合,用户可以存储他们正在工作的项目,项目存储用户正在处理这些项目。

所有解决方案的优缺点:

  • 解决方案1
    • 小型存储
    • 慢项目 - >用户搜索
    • 慢用户 - >项目搜索
  • 解决方案2
    • 小型存储
    • 慢项目 - >用户搜索
    • 快速用户 - >项目搜索
  • 解决方案3
    • 小型存储
    • 快速项目 - >用户搜索
    • 用户缓慢 - >项目搜索
  • 解决方案4
    • 大储存
    • 快速项目 - >用户搜索
    • 快速用户 - >项目搜索

我认为解决方案1绝对是最糟糕的选择,其他选择取决于你的情况。