我有两个模型类:User
和Solution
,我想实现一个方法来获取用户提交的所有解决方案。我可以在User
中将其设为实例方法(例如,user.getSolutions()
,或者我可以在Solution
中将其设为静态方法(例如,Solution.getSolutionsFrom(user_id)
。我不确定哪个设计更好。user.getSolutions()
感觉更自然,但实现将受Feature Envy Smell的影响,因为该方法需要User
唯一的东西是user_id,其余的逻辑是处理Solution
。另外,如果我只有user_id,我必须构建一个虚拟用户实例来调用user.getSolutions()
,这也感觉不对。
答案 0 :(得分:1)
我不会将静态方法放在Solution模型中,而是创建一个SolutionsManager类。 模型内部不应该有任何逻辑,而是设置和获取属性。
public class SolutionManager {
public List<Solution> getSolutions(int userId) {
...
}
}