POJO 的 Java 设计概念

Ric*_*ard 1 java design-patterns domain-driven-design

我试图理解 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

这个汽车 pojo 是否应该有更多的方法getGasMileage,或者getTirePressure应该将这些方法放在接受对象的实用程序/接口中Car

这是一个基于当前代码库的设计问题,使用域驱动设计 (DDD) 和包含getGasMileage. pojo/实体应该只包含 getter/setter 代码,还是包含其他方法是一个好的做法?

jac*_*646 6

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

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

之所以会出现混淆,是因为 POJO 经常与 Java Bean 混为一谈。请参阅:JavaBean 和 POJO 之间有什么区别?