Хорошо, я немного поискал в Интернете и нашел эту ветку, но она все еще не совсем прояснила ее для меня.
В чем конкретно разница между шаблоном переднего контроллера и шаблоном фасада?
Насколько я понимаю, пока:
Шаблон Façade не содержит никакой бизнес-логики, а просто централизует доступ к нескольким объектам.
Фронт-контроллер делает то же самое, но может содержать бизнес-логику для облегчения логики принятия решения о том, что называется, на основе входных данных и т. П.
Чтобы понять это, означает ли следующий упрощенный фрагмент псевдокода, что drawLine - это Фасад для упрощения преобразования координат в точки и последующей реализации метода рисования, который фактически выполняет эту работу?
private void drawLine(Int32 StartX, Int32 StartY, Int32 EndX, Int32 EndY)
{
Point Start = new Point(StartX, StartY);
Point End = new Point(EndX, EndY);
Draw(Start, End);
}
Может ли Фасад вызывать нижние уровни вашего приложения или это просто централизованный доступ ко многим компонентам на одном уровне?
Насколько я понимаю, фронт-контроллер координирует весь процесс вызова функции.
Пример. Фронт-контроллер проверяет данные и затем решает, какое действие предпринять. Затем он будет компилировать данные для каждого последующего вызова классов более низкого уровня, пока не получит подходящий ответ, который может быть предоставлен вызывающей системе.
Я думаю, что мое понимание шаблона Фасада неверно или слишком упрощенно. Пожалуйста, поправьте меня, если я ошибаюсь.
Если мое понимание этого правильное, то не имеет ли смысла изменять фасад приложения в Front Controller в Microsoft Application Architecture Guide 2.0 ? Я специально смотрю на архитектуру сервиса в главе 18. (хотя у меня есть бета-версия 2)
Обновление: Спасибо за отличный ответ Руна. Почему вы говорите, что неправильно менять Фасад на Фронт-контроллер? Я большой поклонник Front-контроллера, потому что он держит все вещи более низкого уровня чуть более под контролем. Так что, хотя это может не иметь БОЛЬШЕ смысла, было бы совершенно неправильно делать это? Если да: почему?