Java 将pojo创建为具有类字段或简单

Java 将pojo创建为具有类字段或简单,java,Java,将pojo创建为具有类字段或简单字段的良好实践是什么。 我正在创建这样的pojo public class StatusDTO { private String id; private int totalNodes; private int totalServlets; private boolean status; public String getId() { return id; } public void setId(String id) { this.id = id

将pojo创建为具有类字段或简单字段的良好实践是什么。 我正在创建这样的pojo

public class StatusDTO {

private String id;
private int totalNodes;
private int totalServlets;
private boolean status;
public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}


public int getTotalNodes() {
    return totalNodes;
}

public void setTotalNodes(int totalNodes) {
    this.totalNodes = totalNodes;
}

public int getTotalServlets() {
    return totalServlets;
}

public void setTotalServlets(int totalServlets) {
    this.totalServlets = totalServlets;
}

public boolean isStatus() {
    return status;
}

public void setStatus(boolean status) {
    this.status = status;
}
} 有人建议我这样做,如下所示

public class StatusDTO {

private String id;
private boolean status;
private Total total;

public Total getTotal() {
    return total;
}

public void setTotal(Total total) {
    this.total = total;
}
public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public boolean isStatus() {
    return status;
}

public void setStatus(boolean status) {
    this.status = status;
}
public static class Total {
    private int nodes;
    private int servlets;
    public int getNodes() {
        return nodes;
    }
    public void setNodes(int nodes) {
        this.nodes = nodes;
    }
    public int getServlets() {
        return servlets;
    }
    public void setServlets(int servlets) {
        this.servlets = servlets;
    }

}
}

这有什么区别?在这两者中,什么是好的实践?
我使用这个类来设置db info并将信息发送到web socket client(stomp)

好的Java应用程序中的一个重要方面是分离关注点,例如,在机场应用程序中,提供客户最后一次航班的服务不应要求作为参数的对象具有名字、姓氏,社会保险号、婚姻状况、性别或任何其他有关客户的信息,这些信息在检索客户上次航班时完全无用(或应该无用),因此您需要一个对象客户(包含所有客户信息)和另一个对象客户ID(仅包含获取航班所需的位).

另一个例子是在线商店应用程序,计算购物篮总价的服务不应要求购物篮中所有物品(照片、说明、规格等)的所有信息,而应仅要求价格和折扣,这些信息应包含在另一个对象中


在这里,您必须决定是否可以将Total(您需要一个更好的名称)对象的关注点与StatusDTO对象的关注点分开,这样一个方法就可以只需要Total对象,而不需要关联的StatusDTO对象。如果你能把它们分开,那么你就应该有单独的对象,如果你不能,那就没有必要了。

答案,就像在这些问题中一样,是:视情况而定

像第一个这样的简单类的优点是它们更简单、更小。第二次尝试的优点是,如果您的类(可能现在或以后)得到扩展,那么创建一个单独的Total类可能会更容易

良好的面向对象编程,而且Java是一个强大的OO,几乎总是要求您将所有内容都放到它自己的类中

根据经验,我创建了一个单独的类,如果:

  • 您可以在字段中添加一些功能
  • 您有两个以上的字段,可能是三个相互关联的字段(例如connectionHost、connectionPort)
  • 它只是一个模型类(例如Customer、Article)
  • 我可以在多个其他类中使用该字段

当然还有很多,但这些都是最重要的(如果你认为我忘了提到另一个重要的,请发表评论)。

答案可能取决于你的班级应该提供什么样的服务。你能添加一些关于你的类的用途的信息吗?同意@TimBiegeleisen我们需要更多的细节,现在只是一种口味。第一种情况是“扁平”,问题是每次更改有关总计的字段时,都必须将状态更改为“(即,如果要添加新总计)。在第二种情况下,*Total可以在不接触StatusDTO的情况下得到增强,但您必须检查NullPointerException,而在第一种情况下则不需要。通常,如果类太长,尝试拆分类是一种好的做法。但是,如果拆分类,以及如何拆分,这在很大程度上取决于代码的语义。您应该阅读有关内聚的内容,coupling和单一责任原则。还有一个很好的简单案例,说明它是有意义的。谢谢你@AndréStannek。