在基于MVC的应用程序中创建模型类

时间:2012-03-02 22:19:21

标签: spring-mvc model

我正在学习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。但是,如果我采取这条路线,是全是还是有其他影响?

2 个答案:

答案 0 :(得分:0)

算了。坚持private字段和public getter / setters。任何Java IDE都可以根据字段生成它们。根据JavaBeans标准,大多数框架依赖于getter / setter(JPA在字段模式下是一个值得注意的例外)。

避免许多麻烦,只使用标准方法。遗憾。

答案 1 :(得分:0)

创建getter和setter的主要论点是从面向对象的意义上改进封装。当您有一个对象时,您通过其公共接口与该对象进行交互。通过直接访问实例变量,您不再与对象进行交互,而是与其内部实现进行交互。

这个想法是创建一个黑盒子,内部是隐藏的。 getter / setter方法可以发送到数据库,文件系统或本地实例变量以检索模型数据。如果这些基础数据源在稍后的更新中发生更改,则只需更改getter / setter方法,而如果直接访问变量,则必须重构整个代码库。