Aquí está el panorama,como desacoplar los datos de la lógica de negocio
Digamos que tengo una clase de usuario, así:
public class User{
private String firstName;
private String lastName;
//...
// setter, getters
}
Entonces tengo una clase al igual que para manejar usuarios Comentarios:
public class Comments{
// some fields
public static loadComments(User user, int count){...}
}
Hasta ahora, cosas muy básicas. Sin embargo, quiero agregar algunos ayudantes, por supuesto, para que sea más fácil cargar comentarios para el usuario. Así que podría crear algo de la clase Usuario:
final static int defaultCount = 10;
...
public Comment comments(){
return Comments.loadComments(this, defaultCount);
}
Creo que esta es una manera fácil de no tener que pasar alrededor de las instancias de usuario alrededor. Pero en este momento, no estoy contento porque he acoplado mi objeto bean de usuario con la lógica de negocios que carga el comentario. También guardé el recuento predeterminado en la clase de usuario, que no debería pertenecer allí. Entonces, ¿cuál es la mejor manera de hacer esto? Mi objetivo es pasar este objeto a un jsp para poder llamar a las funciones JSTL. Tuve la idea de crear un UserWrapper que se vería así ...
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);}
}
Espero haber sido claro. No me gusta usar la etiqueta useBean porque simplemente no es necesario para algo como esto. ¡Espero que haya una forma más limpia de abordar algo como esto! ¡Cualquier ayuda sería apreciada!
Editar: Una cosa que olvidé mencionar. Quiero poder usar este código en JSTL. Lo que significa que debe ser un getter. El modelo DAO es bien conocido pero no ayuda demasiado cuando mi desarrollador front-end necesita escribir un scriplet o necesito cargarlo para lugares que puede o no necesitar.
Hmmm después de pensarlo. Creo que una mejor pregunta que hacer es que, por lo general, los DAO son todas funciones estáticas. ¿Qué sucede si tiene que pasar un parámetro a cada función? Digamos una ficha de OAuth. Creo que en ese caso, tendría sentido no hacer el DAO estático solamente y hacer que acepte un token como el constructor. Como nuevo UseDao (String token); ¿Alguna idea? –
hmmmm que responden aceptar: P –