Моя архитектура выглядит так:
View - Controller - Services
Думайте об одном из представлений как о странице сведений о человеке. Контроллер вызывает
(Person) service.getPerson(1234)
и возвращает экземпляр Person в представление для отображения. Служба извлекает человека, взаимодействуя через веб-службу RESTFul.
Служба restful возвращает следующий ответ:
<person>
<id>1234</id>
<name>John Doe</name>
<person-detail-uri>/person/1234/detail</person-detail-uri>
</person>
Приведенный выше ответ сопоставлен с классом с именем Person, который выглядит примерно так:
class Person{
Long id;
String name;
String age;
String address
}
Полный объект персонажа можно создать, получив персонажа через
/person/1234
, а затем детали через
/person/1234/detail
Предположим, что представление должно отображать сведения о человеке.
Вопрос:
Вариант A: должен ли Controller вызывать getPerson () и getPersonDetails () в службе для создания полного экземпляра Person
или
Вариант B: просто getPerson () и позвольте представлению вызвать person.getAge (), который каким-то образом (вероятно, через аспекты) вызовет выборку деталей.
Я теряю некоторую гибкость в варианте A, однако, это делает модель очень глупой, что я считаю хорошей вещью, потому что тогда плохой код не может загрязнить кэши и, следовательно, может не вызвать проблем с производительностью.