【发布时间】:2016-04-21 23:43:15
【问题描述】:
我是 jsp 的新手。我想做一个测试项目来熟悉它。
我选择做的项目是设计一个人们可以注册并为自己制作简历的网站。
每个注册的人都可以定义一些他以前做过的项目。
比如我用用户名SHT注册,定义PROJECTA和PROJECTB,表示这些项目应该显示在我的简历。
顺便说一下,我想用MVC设计。
我的问题是,当我想设计模型类时,我不知道从以下场景中哪种方法最好:
1- 我首先想到的是,我可以为 Users 创建一个包含 UserId 和 UserName 的类,并且...
我需要另一个包含 ProjectName 和 ProjectId 的 Projects 类,以及另一个包含 UserProject 的类>UserId、ProjectId,以便能够找到属于特定用户的项目。
在这个例子中,我有一个来自用户类的用户对象,用户 ID 是 1,用户名是“SHT”。
我有 2 个来自项目类的对象:
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 和用户项目列表。
例如我有这种方式:
来自项目的 2 个对象:
OBJECT1{ ProjectId = 1 , ProjectName = "PROJECTA"}
OBJECTB { ProjectId = 2, ProjectName = "PROOJECTB"}
和来自用户的对象:
USER1 { UserId = 1 , UserNAme = "SHT", ListOfProjects = {ProjectId = 1,ProjectId = 2}}
这是我想到的两种方式。但我不知道在这种情况下哪个更好。 我想也许第一种方式更好,因为稍后我可能想添加每个用户可以注册一些项目并且每个用户可以拥有技能列表等功能。有了这些功能,我认为第一种方法可能更容易处理。
谁能帮我看看哪个更好?
如果您认为有更好的方法,我将不胜感激。
提前感谢您的关注。
【问题讨论】:
-
您的问题的答案实际上是基于您认为更合适的。一方面,第二种方法允许您在创建用户后轻松地向该用户添加更多项目,并且该用户还具有用户名,而第一个没有。我真的还是不完全确定你打算用这个项目做什么,所以很难说哪个“更好”。
-
@BenjaminLowry 感谢您的评论。恐怕第二种方法会使我的代码变得复杂。另一方面,我担心第一个会让我的代码变脏。
-
好吧,我建议使用第二种方法,因为它可以让你有能力在未来做更多的事情。复杂性的缺点确实不会在未来对您造成严重影响,而使用过于简单的方法可能会迫使您重新设计整个项目或只是阻止您实现某些功能。