【发布时间】:2011-04-30 22:35:54
【问题描述】:
这是场景,
假设我有一个这样的用户类:
public class User{
private String firstName;
private String lastName;
//...
// setter, getters
}
然后我有一个这样的类来处理用户评论:
public class Comments{
// some fields
public static loadComments(User user, int count){...}
}
到目前为止非常基本的东西。但是,我当然想添加一些帮助程序,以便更轻松地为用户加载 cmets。所以我可以在 User 类中创建一些东西:
final static int defaultCount = 10;
...
public Comment comments(){
return Comments.loadComments(this, defaultCount);
}
我认为这是一种无需传递用户实例的简单方法。但在这一点上,我很不高兴,因为我已经将我的用户 bean 对象与加载评论的业务逻辑相结合。我还在用户类中保存了不应该属于那里的默认计数。那么最好的方法是什么?我的目标是将此对象传递给 jsp,以便可以调用 JSTL 函数。我有一个想法来创建一个看起来像这样的 UserWrapper...
public class UserWrapper{
private final static defaultCount = 10;
private final User user;
public UserWrapper(User user){
this.user = user;
}
// should probably cache this but i am not going to show this for simplicity
public Comments getComments(){return Comments.loadComments(user, 10);}
}
我希望我很清楚。我不喜欢使用 useBean 标记,因为这样的事情没有必要。我希望有一种更清洁的方法来处理这样的事情!任何帮助将不胜感激!
编辑:我忘了提一件事。我希望能够在 JSTL 中使用此代码。这意味着它必须是一个吸气剂。 DAO 模型是众所周知的,但是当我的前端开发人员需要编写一个 scriplet 或者我需要将它加载到他可能需要或可能不需要的地方时,它并没有太大帮助。
【问题讨论】:
-
嗯,想了想。我认为一个更好的问题是通常 DAO 都是静态函数。如果您必须将一个参数传递给每个函数,会发生什么情况。假设是一个 oAuth 令牌。我认为在这种情况下,不要只将 DAO 设为静态并使其接受令牌作为构造函数是有意义的。像 new UseDao(String token);有什么想法吗?
-
hmmmm 要接受哪个答案:P
标签: java jsp architecture jstl packaging