【问题标题】:Java Design Concept of POJOsPOJO的Java设计理念
【发布时间】:2017-05-11 20:17:14
【问题描述】:

我正在尝试了解 Java POJO 的最佳设计理念。如果我有一个像这样的car 对象:

public class Car {
    private String color;
    private String make;
    private String model;
    private int year;

    public Car(String color, String make, String model, int year) {
        this.color = color;
        this.make = make;
        this.model = model;
        this.year = year;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getMake() {
        return make;
    }

    public void setMake(String make) {
        this.make = make;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public int getYear() {
        return year;
    }

    public void setYear(int year) {
        this.year = year;
    }
}

这辆车是否应该有更多的方法,比如getGasMileagegetTirePressure,还是应该将这些方法放在接受Car 对象的实用程序/接口中?

这是一个基于当前代码库的设计问题,该代码库使用领域驱动设计 (DDD) 和包含 getGasMileage 等方法的实体对象。 pojo/entity 是否应该只包含 getter/setter 代码,还是同时包含其他方法是一种好习惯?

【问题讨论】:

  • POJO 只包含它们的字段和 getter / setter。任何处理Car对象的逻辑都应该被提取到单独的类中
  • 这是一个见仁见智和激烈辩论的问题,请使用您的最佳判断。
  • 我的 POJO 充满了方便的方法……跟我来吧。 ;)

标签: java design-patterns domain-driven-design


【解决方案1】:

根据发明该术语的Martin Fowler,POJO 旨在包含业务逻辑。

这个词是在 Rebecca Parsons、Josh MacKenzie 和我准备在 2000 年 9 月的一次会议上发表演讲时创造的。在演讲中,我们指出了将业务逻辑编码为常规 Java 对象而不是使用实体 Bean 的许多好处.我们想知道为什么人们如此反对在他们的系统中使用常规对象,并得出结论,这是因为简单的对象缺乏花哨的名称。所以我们给了他们一个,它很受欢迎。

之所以会出现混淆,是因为 POJO 经常与 Java Bean 混为一谈。见:What is the difference between a JavaBean and a POJO?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 2012-01-27
    • 1970-01-01
    相关资源
    最近更新 更多