Срикант имеет хороший ответ. Я хотел бы остановиться на альтернативе, хотя. Предположим, у вас есть такая простая иерархия URL:
/gallery
/blog
/admin/login
/admin/newpost
Если это реализовано с помощью контроллеров страниц (например, PHP), то и gallery.php
, и blog.php
должны будут включать немного common.php
в начале (или рядом). Однако, и login.php
, и newpost.php
могут включать admin-common.php
, который сам извлекает файл 'common.php' и выполняет настройку, специфичную для '/ admin /', например, проверку подлинности пользователя.
В общем случае, если у вас есть иерархия URL-адресов, в конечном итоге она выглядит как деревья наследования объектов. За исключением того, что вместо использования наследования на уровне языка вы наследуете окружение того, что foo-common.php
вы включаете.
Я не могу представить, как Front Controller повышает тестируемость. В конце концов, требуются те же самые тесты от автоматического HTTP-агента пользователя, независимо от реализации.
Одним из основных недостатков Page Controllers является то, что оно делает ваше веб-приложение зависимым от среды его размещения. Это также вынуждает ваших разработчиков «видеть» ту же структуру, что и конечные пользователи, но я считаю, что это хорошо, учитывая количество сайтов, на которых я вижу абсолютно ужасные URL.