我正在学习Spring MVC。在大多数示例和教程中,我看到通过定义私有变量并为它们提供setter和getters方法来创建一个简单的Model类
例如下面的那个
public static class Person {
private String firstName;
private String lastName";
public String firstName() {
return firstName;
}
public void firstName(String bar1) {
this.firstName = firstName;
}
public String lastName() {
return lastName;
}
public void lastName(String bar2) {
this.lastName = lastName;
}
}
但我可以通过定义公共变量来定义上面的类,因为我没有在getter和setters方法中进行任何处理,如下所示
public static class Person {
public String firstName;
public String lastName";
}
并像
一样访问它Person objPerson = new Person();
objPerson.firstName = 'Mickey';
objPerson.lastName = 'Mouse';
我理解这种方法在某种意义上并不是非常动态的,如果稍后我决定在getter和setter方法中放入一些处理逻辑,那么我可能必须更改所有客户端对象以更改为使用getter和setter。但是,如果我采取这条路线,是全是还是有其他影响?
答案 0 :(得分:0)
算了。坚持private
字段和public
getter / setters。任何Java IDE都可以根据字段生成它们。根据JavaBeans标准,大多数框架依赖于getter / setter(JPA在字段模式下是一个值得注意的例外)。
避免许多麻烦,只使用标准方法。遗憾。
答案 1 :(得分:0)
创建getter和setter的主要论点是从面向对象的意义上改进封装。当您有一个对象时,您通过其公共接口与该对象进行交互。通过直接访问实例变量,您不再与对象进行交互,而是与其内部实现进行交互。
这个想法是创建一个黑盒子,内部是隐藏的。 getter / setter方法可以发送到数据库,文件系统或本地实例变量以检索模型数据。如果这些基础数据源在稍后的更新中发生更改,则只需更改getter / setter方法,而如果直接访问变量,则必须重构整个代码库。