user.getSolutions()或Solution.getSolutionsFrom(user_id)?

时间:2014-04-11 18:48:22

标签: oop model-view-controller

我有两个模型类:UserSolution,我想实现一个方法来获取用户提交的所有解决方案。我可以在User中将其设为实例方法(例如,user.getSolutions(),或者我可以在Solution中将其设为静态方法(例如,Solution.getSolutionsFrom(user_id)。我不确定哪个设计更好。user.getSolutions()感觉更自然,但实现将受Feature Envy Smell的影响,因为该方法需要User唯一的东西是user_id,其余的逻辑是处理Solution。另外,如果我只有user_id,我必须构建一个虚拟用户实例来调用user.getSolutions(),这也感觉不对。

1 个答案:

答案 0 :(得分:1)

我不会将静态方法放在Solution模型中,而是创建一个SolutionsManager类。 模型内部不应该有任何逻辑,而是设置和获取属性。

public class SolutionManager {
       public List<Solution> getSolutions(int userId) {
               ...
       }
}