Классическая многозвенная архитектура
Посмотрим, что произойдет, если мы спроектируем и создадим наше приложение для опроса на основе этой архитектуры. Прежде всего, обращает на себя внимание существенное разделение уровней содержимого, логики и представления. Мы также добились независимости от базы данных с помощью абстрактного класса БД и независимости от языка представления с помощью класса HTML. Посмотрим теперь, что произойдет, если возникнет необходимость модифицировать это приложение.
Вариант 1: новый вид результатов опроса
Показ вариантов, количества голосов и результатов мы организовали в виде таблицы. Допустим, что дизайнеры решили графически представить процент голосов, поданных за каждый вариант.
В данной архитектуре мы должны модифицировать только уровень представления данных, чтобы воспользоваться функциями класса HTML, создающими графические прямоугольники. Если такой функциональности в классе HTML нет, придется ее создать. Однако может оказаться, что есть другие приложения, которым нужны графические прямоугольники, и они смогут повторно использовать наш код. Как видим, в уровне логики изменения не потребовались. Представление и логика оказались независимы.
Вариант 2: запретить пользователю голосовать несколько раз
Здесь потребуется модифицировать логику. Чтобы не дать пользователям возможность повторно голосовать в одном и том же опросе, можно прибегнуть к cookies. Продвинутые пользователи могут удалить cookies, но мы не будем обращать на это внимание. Приняв такое решение, мы добавим применение cookies и управляющие элементы в уровень логики приложения. Эти изменения не повлияют на уровни содержимого или представления.
Вариант 3: версия с Flash
Команда дизайнеров наносит новый удар: теперь они хотят представить все приложение с помощью чудесных анимаций Flash со звуком, графикой и танцующими медведями. Они могут просто создать класс Flash с таким же интерфейсом, как у класса HTML, и реализовать каждый метод класса HTML с помощью Flash-функций РНР. Больше нам ничего не придется модифицировать, и мы получим Flash-приложение опроса. См. примеры Flash- функций РНР в главе
Резюме
В этой главе мы рассмотрели разработку многозвенных приложений как метод создания веб-сайтов и приложений. Идея разработки многозвенных приложений состоит в том, чтобы выделить уровни данных (содержимого), логики и представления и минимизировать взаимодействие между ними. При разработке многозвенных приложений внимание должно быть сосредоточено на проектировании, а не на кодировании. Масштабируемость и производительность самым существенным образом связаны с проектированием и архитектурой приложения. Применение ООП и абстрактных классов - ключ к успеху многозвенной архитектуры.