В чем разница между информационным экспертом GRASP и связностью GRASP?
Обе концепции очень похожи, трудно сказать, что есть что.
Пожалуйста, приведите пример того, как вы бы их дифференцировали.
2 ответа
Все концепции GRASP связаны, поэтому вы должны рассмотреть их все вместе:
- "эксперт по информации" - вопрос "Какой объект должен иметь необходимое поведение?" (Пожалуйста, смотрите http://en.wikipedia.org/wiki/Domain-driven_design) как один из ответов на этот вопрос.
- "сплоченность" - вопрос "сколько объектов различного поведения имеют" http://en.wikipedia.org/wiki/GRASP_%28object-oriented_design%29
Вы не должны изучать эти понятия без практики кодирования, писать код / делать рефакторинг - и вы получите это.
Шаблоны проектирования GRASP, как очень правильно сказано здесь ( Является ли Information Expert из GRASP и Modell из MVC одинаковыми?), Являются принципами проектирования и помогают вам оценить ваши проектные решения и реализацию.
"Сплоченность" в GRASP - это образец оценки наряду с "сцеплением". Таким образом, вы должны использовать их для анализа вашего проекта, чтобы выяснить, насколько он сплоченный и слабосвязанный, что напрямую повышает возможность повторного использования и расширяемости.
С другой стороны, "Эксперт по информации" может помочь вам определить, на какой класс должна быть возложена определенная ответственность. Он говорит вам назначить определенную ответственность за класс, который имеет больше информации о нем. |
Следовательно, в простом случае использования корзины покупок вы бы указали: A ShoppingItem для вычисления ItemPrice() на основе количества и цены за единицу, и ShoppingCart для вычисления TotalPrice().
Это становится решающим фактором, и обратите внимание, что большинство шаблонов проектирования GOF фактически поддерживают эту концепцию GRASP.
Самое главное. Если вы применили шаблон "Информационный эксперт" в своем проекте, он должен обеспечить высокую степень согласованности в плане оценки вашего проекта. Вот как информационный эксперт и сплоченность будут идти рука об руку, как и все другие шаблоны GRASP.
Ресурсы: http://www.cs.bgu.ac.il/~oosd051/uploads/stuff/ApplyingUMLandPatterns.pdf