【问题标题】:Creating Model classes in a MVC based applications在基于 MVC 的应用程序中创建模型类
【发布时间】:2012-03-03 06:26:32
【问题描述】:

我正在学习 Spring MVC。在大多数示例和教程中,我已经看到通过定义私有变量并为它们提供 setter 和 getter 方法来创建一个简单的 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 和 setter 方法中进行任何处理,如下所示

public static class Person  {
    public String firstName;
    public String lastName";
}

并像访问它一样访问它

Person objPerson = new Person();
objPerson.firstName = 'Mickey';
objPerson.lastName = 'Mouse';

我知道这种方法在某种意义上不是很动态,如果稍后我决定在 getter 和 setter 方法中放置一些处理逻辑,那么我可能必须更改所有客户端对象以更改为使用 getter 和 setter。但是如果我走这条路,那是全部还是有其他影响?

【问题讨论】:

标签: spring-mvc model


【解决方案1】:

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

免去很多麻烦,只需使用标准方法即可。对不起。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      • 2016-02-10
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多