Является ли Information Expert от GRASP и Modell от MVC одинаковыми?

Я только начал читать книгу "Применение UML и шаблонов" (2-е издание). Является ли один из шаблонов GRASP информационным экспертом, эквивалентным модели Modell MVC?

Имеют ли они одинаковые обязанности (хранение и поиск информации)?

1 ответ

Решение

Является ли Information Expert от GRASP и Modell от MVC одинаковыми?

И да и нет.

Имеют ли они одинаковые обязанности (хранение и поиск информации)?

Нет. Право информационного эксперта не ограничивается хранением и поиском информации. Чаще всего это делается постоянным слоем, который мы можем назвать "чистым изготовлением".

Шаблоны GRASP (я предпочитаю их как принципы) используются для определения того, какая ответственность принадлежит какому классу или эта ответственность требует нового класса. Это помогает нам поддерживать порядок в дизайне на уровне класса. С другой стороны, MVC - это проектирование всей системы - как вы ее разделяете. Каждая из 3 частей MVC обычно содержит несколько классов.

Архитектурный образец и / или проектный образец решается сначала. Затем мы применяем принципы GRASP для каждой из обязанностей, которые должна выполнять система.

Предположим, у нас есть приложение, но клиенты хотят его с разными вариантами или интерфейсами. Данные и бизнес-логика одинаковы. Таким образом, MVC - хороший кандидат на то, чтобы разделить модель и использовать ее для всех клиентов.

Теперь в нашей модели у нас есть класс Customer. Одной из обязанностей системы является отправка электронного письма клиенту. Customer Класс хранит информацию о клиенте и поэтому является информационным экспертом. Мы храним адрес электронной почты в Customer класс и добавить метод getEmailAddress(), Если мы добавим ответственность за "отправку электронной почты" в Customer класс, это нарушает "высокую сплоченность". Таким образом, мы можем применить "чистое изготовление" и добавить новый класс EmailSender который принимает адрес электронной почты, тему и тело письма. Этот пример может показаться глупым, но это лучшее, что я могу придумать.

(В архитектуре MVC модель имеет все данные, которые необходимы контроллеру и представлению. Я полагаю, что OP рассматривает модель как эксперта по информации с этой точки зрения.)

Другие вопросы по тегам