Хорошо, я немного поработал в Интернете и нашел этот поток, но он до сих пор не совсем понял это для меня.
В чем же разница между шаблоном переднего контроллера и шаблоном фасад?
Как я понимаю до сих пор: Шаблон Façade не содержит бизнес-логики, а просто централизует доступ к нескольким объектам.
A Front Controller делает то же самое, но может содержать бизнес-логику, чтобы облегчить логику решения того, что вызывается на основе входных данных и т.п.
Чтобы понять это, делает ли следующий упрощенный фрагмент псевдокода, что drawLine - это фасад, который упрощает преобразование координат в точки и затем реализует метод draw, который фактически выполняет работу?
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 2.0? Я специально рассматриваю архитектуру обслуживания в главе 18. (У меня есть версия Beta 2)
Обновление: Спасибо за отличный ответ Rune. Почему вы говорите, что неправильно менять фасад на передний контроллер? Я большой поклонник Front-контроллера, потому что он держит все элементы более низкого уровня немного более контролируемыми. Поэтому, хотя это может и не сделать БОЛЬШЕ смысла, было бы совершенно неправильно делать это? Если да: почему?