Вот сценарий,как отвязать данные из бизнес-логики
Допустим, у меня есть пользовательский класс следующим образом:
public class User{
private String firstName;
private String lastName;
//...
// setter, getters
}
Тогда у меня есть класс, как можно так обращаться с пользователем Комментарии:
public class Comments{
// some fields
public static loadComments(User user, int count){...}
}
Пока что очень простой материал. Однако я хочу добавить некоторых помощников, чтобы облегчить загрузку комментариев для пользователя. Поэтому я мог бы создать что-то в классе 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 хорошо известна, но это не слишком помогает, когда моему разработчику переднего плана необходимо написать скрипт, или мне нужно загрузить его для тех мест, которые он может или не понадобится.
Хммм, подумав об этом. Я думаю, что лучше задать вопрос, что обычно DAO - это все статические функции. Что произойдет, если вам нужно передать один параметр для каждой функции. Скажем, токен oAuth. Я думаю, что в этом случае было бы разумно не делать только статичное DAO и заставить его принимать токен в качестве конструктора. Как новый UseDao (String token); Есть предположения? –
hmmmm, который отвечает, чтобы принять: P –