Как следует осуществлять связь приложений n-уровня между слоями?
Недавно я обсуждал лучший способ управления связью в цепочке n-уровневой архитектуры.
В настоящее время я использую методы, которые генерируют и обрабатывают исключения между слоями для ошибок, и используют события / делегаты для другого взаимодействия (для обновления индикаторов выполнения и тому подобного). Это лучший способ или есть другой метод, который я упустил из виду, который будет считаться лучшей практикой?
3 ответа
Исключения действительно являются хорошим способом обработки ошибок более низких уровней.
На мой взгляд, делегаты наиболее полезны, когда один объект, который владеет другим объектом, должен настроить этот объект. Это может иметь смысл, если ваши уровни логически "владеют" объектами на более низких уровнях - иначе я бы, вероятно, уклонился от шаблона делегата и использовал бы события.
Я попытался использовать шаблон адаптера. Основные объекты лежат в логическом слое и упакованы, используя составные объекты, чтобы могли работать уровни представления и доступа к данным. Большинство классов представления и уровня доступа к данным используют интерфейсы. Объекты-оболочки (составные) лежат на уровнях представления и доступа к данным и реализуют интерфейсы этих уровней.
Помимо составных объектов, существуют объекты-контроллеры, которые могут извлекать данные из логических объектов и создавать новые объекты (то есть список строк).
Я бы сказал, что вы находитесь на правильном пути в том, что касается обработки исключений, то есть реализации шаблона цепочки ответственности. Всегда хорошо бросить исключение в цепочку. Что касается другого (события / делегаты), я не совсем понял ваше заявление, поэтому не мог прокомментировать это.