3

在我的系统中,用户可以发布任意数量的旅行。小米用户类(域对象)是这样的

public class User {
    private String name;
    private String id;
    /* More private fields */

    /* getters and setters */
}

因此,如果我想获取 id = 1 的用户的所有行程:

/* Domain Layer */
public class UserManager {
    ...
    public Trip[] getAllTrips(int userId) {
        dao.getAllTrips(userId);
    }
    ...
 }

/* DAL Layer */
public class UserDaoImpl implements IUserDao {
    public Trip[] getAllTrips(int userId) {
        /* jdbc here */
    }
}

它有效,但我认为我的 User 类存在“贫血域问题”(或贫血 POJO 问题,它是否存在?):只有私有字段和“getter”和“setter”(我所有的 POJO 都一样)。

我想到了另一种方法:

public class User {
    /* More private fields */
    private Trip[] trips;

    /* getters and setters */
    public Trip[] getTrips() {
        return trips;
    }
    ...
    public void addTrip(Trip trip) {
        // add the trip
    }
}

public class UserManager {
    public Trip[] getAllTrips(int userId) {
        User user = dao.getUser(userId);
        return user.getTrips();
    }
 }

使用第二种方法,用户类具有更多功能,但行程不存储在数据库中。

我错过了什么?我是 DAO 的新手,我不知道我是否采取了正确的方法。

谢谢(是的,我的英语很烂)。

4

1 回答 1

1

为什么不将 getAllTrips 函数也添加到 User 类?只要您的函数适用于一个用户对象,就可以将函数添加到 User 类。

如果您对多个用户执行操作,则 UserManager 类将有意义,例如

cancelTrip(int tripId) 
{ 
    // remove trip from all users 
} 
于 2011-12-08T15:51:07.100 回答