2016-09-26 57 views
2

我有一个类用户它具有实例变量与默认值。像下面提供是不是很好,有实例变量分配给一些值,而不是在构造函数中声明

public class User{ 
    private String username=""; 
    private String password = ""; 
    private Boolean isValidUser = true; 
    private Boolean email = "[email protected]" 
    ........ 
} 

现在我已经改变了我的课像

public class User{ 
     private String username; 
     private String password; 
     private Boolean isValidUser; 
     private Boolean email 
     ........ 

     public User(){ 
     email = "[email protected]"; 
     isValidUser = true; 
     ....... 
     } 
    } 

我虽然保持这些默认值的构造函数是很好的做法。

我知道这很愚蠢问题= D但想知道你的意见。

+0

个人我不会这样做,因为它看起来像一个默认的构造函数在这里没有任何意义。我宁愿坚持有价值的构造函数,就是这样。但正如你可能已经注意到的,这是基于高度敏感的,我猜测它会被关闭,就像 – SomeJavaGuy

+0

在多构造函数的情况下,直接初始化字段而不是在所有构造函数中可能更好。 – Tokazio

+2

相关,可能的重复:http://stackoverflow.com/questions/1994218/should-i-instantiate-instance-variables-on-declaration-or-in-the-constructor – Arc676

回答

2

问题是,你不会放下课程“随你去”。一门课程的确切设计只是整个设计中的一个小方面。

来自DDD(域驱动设计)首先要考虑的是您打算构建的模型。含义:为了在系统中对用户进行建模,您正在创建一个类用户。这意味着你(以及参与该项目的所有其他人员)需要非常清楚地了解“用户的真实身份”。

例如:您的字段似乎都不是最后的。但我很确定:在任何合理的用户模型中,用户将具有某些属性,从不更改;例如特定的用户ID。另一方面,给新用户分配一些“默认”电子邮件地址似乎是非常错误的;并声明这些用户是“有效的”。与此相反的。

我在说的实质是:你应该专注于创建一个一致的模型。然后,当你真的了解你的系统正在用“用户对象”和这些用户拥有哪些属性;那么你可以看看很多可能的模式,以后如何实际创建这样的对象。

您的方法是通过您的实施细节来定义您的系统。并列出 - 这不是一个好主意。

相关问题