POJO的Java设计概念

时间:2017-05-11 20:17:14

标签: 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;
    }
}

这个汽车pojo应该有更多的方法,如getGasMileagegetTirePressure,还是应该将这些方法放在一个接收Car对象的实用程序/接口中?

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

1 个答案:

答案 0 :(得分:3)

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

  

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

发生混淆是因为POJO经常与Java Bean混为一谈。请参阅:What is the difference between a JavaBean and a POJO?