Ami*_*far 8 java architecture jsp packaging jstl
这是场景,
假设我有一个像这样的用户类:
public class User{
private String firstName;
private String lastName;
//...
// setter, getters
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个像这样的类来处理用户评论:
public class Comments{
// some fields
public static loadComments(User user, int count){...}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止非常基本的东西 但是,我想添加一些帮助程序,以便更容易为用户加载注释.所以我可以在User类中创建一些东西:
final static int defaultCount = 10;
...
public Comment comments(){
return Comments.loadComments(this, defaultCount);
}
Run Code Online (Sandbox Code Playgroud)
我认为这是一种不必传递用户实例的简单方法.但是在这一点上,我很不高兴,因为我已经将我的用户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);}
}
Run Code Online (Sandbox Code Playgroud)
我希望我很清楚.我不喜欢使用useBean标签,因为它对于这样的东西不是必需的.我希望有更清洁的方法来接近这样的事情!任何帮助,将不胜感激!
编辑:我忘了提一件事.我希望能够在JSTL中使用此代码.这意味着它必须是一个吸气剂.DAO模型是众所周知的,但是当我的前端开发人员需要编写scriplet或者我需要将其加载到他可能需要或可能不需要的地方时,它并没有太大帮助.
从技术独立的角度来看...
是的,关于这种耦合是令人望而却步的,你是完全正确的。请参阅层架构模式来提供有关构建业务逻辑和数据的一些指导。例如,设计两个子系统可能是一个好主意:一个用于逻辑,另一个用于层。通过仅允许逻辑将消息传递到数据层来限制它们之间的通信。此外,您可以使用Facade模式来表示每个子系统,从而进一步降低耦合。将每一层视为一个黑盒子。
另一种可能派上用场的模式是数据访问对象模式。它将帮助您定义层之间的合同,以便在必要时传递数据。
| 归档时间: |
|
| 查看次数: |
1911 次 |
| 最近记录: |