Я начал изучать GWT около недели назад, и вот вопрос, на который я точно не могу ответить.
Вот серверная часть:
// business object - has logic
interface Article {
String getTitle(); // lazy
void setTitle();
String getText(); // lazy
void setText();
Set<Comment> getComments(); // lazy
}
// also has logic
interface Comment { ... }
Мне нужно как-то создать виджет GWT для визуализации Article
. Передача Article
не будет работать, так как она не сериализуема и, кроме того, имеет некоторый BL. Итак, есть 2 способа:
Первый - использовать DTO, такие как:
class ArticleDTO implements Serializable {
public int articleId;
public String title;
public String text;
}
class CommentDTO implements Serializable {
public int commentId;
public int articleId;
public String commentText;
}
Мне нужно будет реализовать логику хранилища в моей службе RPC GWT:
class MyRPCRepository ... {
ArticleDTO getArticle(int id);
void saveArticle(ArticleDTO article);
void deleteArticle(ArticleDTO article);
...similar things for comments here...
}
Второй способ заключается в использовании DAO:
class ArticleDAO implements Serializable {
private transitional MyRPC rpc;
private int articleId; // only this one is serializable
public ArticleDAO(MyRPC rpc, int articleId) { ... }
public String getTitle() {
// i know it would require more code in real
return rpc.getArticleTitle(articleId);
}
...
}
Мне нравится первый, потому что он действительно глупый. Мне нравится второй, потому что он довольно интеллектуален. Какую из них выбрать, чтобы сделать код проще для понимания и поддержки?