java中更好的OOPs概念
我有两门课,分别是 用户和用户配置文件 用户包含(一些属性,如):-java中更好的OOPs概念,java,oop,Java,Oop,我有两门课,分别是 用户和用户配置文件 用户包含(一些属性,如):- 用户ID 罗吉尼 密码 及 UserProfile包含(其他所有属性,如):- 用户ID 名字 地址 流动的 多巴哥 电子邮件 我在数据库中有两个与这些类对应的表,即User\u table和User\u profile\u table 现在我想要的是以这样一种方式来设计这些类,从而产生一个完美的OOPs概念 我的问题是,除了setter和getter方法之外,我还需要在这些类中使用哪些其他方法 我打算放一个 Use
- 用户ID
- 罗吉尼
- 密码
- 用户ID
- 名字
- 地址
- 流动的
- 多巴哥
- 电子邮件
- UserProfile类中的构造函数UserProfile(Integer userId),它将获取userId,从User\u profile\u表中获取值并初始化所有属性
- 另一个构造函数UserProfile(),不带参数,用于初始化具有空值的对象
- saveUserProfile()用于将配置文件保存到数据库中
如果没有,那么我如何处理这些代码(我应该在哪里编写处理数据库的代码)?我会让您更改表名:“user”和“user\u profile”应该足够了,除非您有一个命名约定,强制您这样命名它们 什么可能有用
- 有两种方法可以根据用户的DOB的当前或给定日期计算年龄
- 验证以确保用户的凭据唯一并符合您的标准
你的申请将告诉你其他人。当您发现自己调用getter并处理返回的内容时,您应该将其视为将行为封装在对象内的机会。有些类是值类型,表示一段数据。对于这些,getter和setter可能是您所需要的全部 使用getter/setter而不是public字段可以在不影响调用方的情况下更改表示形式 每节课都应该有一节课。如果它代表一个用户配置文件,那么它就应该这样做。您可以在其他类中放置额外的功能——例如,UserValidator 在某些时候,您可能会对对象关系映射(ORM)工具(如hibernate和ibatis)感兴趣。没有“完美”的答案。模型始终取决于总体环境(您比任何人都了解)。但是,通过您在下面提供的少量信息,我可以看到一些方法是用户体验的一部分
- 验证()
- 未经验证()
- addUser(用户u)
- findUserById(…)
toString()、equals()、hashCode()
。。。这是生产级别中最重要的方法。就OOPs和我的知识范围而言。
我想给你一些建议:
1) 请记住,您的域名必须告知,而不是询问
正如我在您的问题中所看到的,在表层次结构中,User\u表比User\u profile\u表更重要。所以,您应该告诉User\u profile\u表有关User的信息,而不是从中询问User的对象
2) 注意是否存在双向关联,但我看不出有,不要将两个对象的状态耦合得太紧
请参阅。Nice post,但我不同意验证不属于数据传输对象的部分。定义对象是否包含有效数据的规则集肯定存在。这就是Bean验证框架背后的想法。()@vstoyanov-谢谢。没错,您可以选择在类中包含简单验证。将验证放在别处的一个优点是,如果可以有多个并发的验证规则。在你的帖子中,关于独立的关注点,比如属于其他类的验证,你也是对的。