Аргерих Л. О языке РНР. Часть 4. Страница 6


Классическая многозвенная архитектура

Посмотрим, что произойдет, если мы спроектируем и создадим наше прило­жение для опроса на основе этой архитектуры. Прежде всего, обращает на себя внимание существенное разделение уровней содержимого, логики и представления. Мы также добились независимости от базы данных с помо­щью абстрактного класса БД и независимости от языка представления с по­мощью класса HTML. Посмотрим теперь, что произойдет, если возникнет необходимость модифицировать это приложение.

Вариант 1: новый вид результатов опроса

Показ вариантов, количества голосов и результатов мы организовали в виде таблицы. Допустим, что дизайнеры решили графически представить про­цент голосов, поданных за каждый вариант.

В данной архитектуре мы должны модифицировать только уровень пред­ставления данных, чтобы воспользоваться функциями класса HTML, созда­ющими графические прямоугольники. Если такой функциональности в классе HTML нет, придется ее создать. Однако может оказаться, что есть другие приложения, которым нужны графические прямоугольники, и они смогут повторно использовать наш код. Как видим, в уровне логики измене­ния не потребовались. Представление и логика оказались независимы.

Вариант 2: запретить пользователю голосовать несколько раз

Здесь потребуется модифицировать логику. Чтобы не дать пользователям возможность повторно голосовать в одном и том же опросе, можно прибег­нуть к cookies. Продвинутые пользователи могут удалить cookies, но мы не будем обращать на это внимание. Приняв такое решение, мы добавим при­менение cookies и управляющие элементы в уровень логики приложения. Эти изменения не повлияют на уровни содержимого или представления.

Вариант 3: версия с Flash

Команда дизайнеров наносит новый удар: теперь они хотят представить все приложение с помощью чудесных анимаций Flash со звуком, графикой и танцующими медведями. Они могут просто создать класс Flash с таким же интерфейсом, как у класса HTML, и реализовать каждый метод класса HTML с помощью Flash-функций РНР. Больше нам ничего не придется мо­дифицировать, и мы получим Flash-приложение опроса. См. примеры Flash- функций РНР в главе

Резюме

В этой главе мы рассмотрели разработку многозвенных приложений как ме­тод создания веб-сайтов и приложений. Идея разработки многозвенных при­ложений состоит в том, чтобы выделить уровни данных (содержимого), ло­гики и представления и минимизировать взаимодействие между ними. При разработке многозвенных приложений внимание должно быть сосредоточе­но на проектировании, а не на кодировании. Масштабируемость и произво­дительность самым существенным образом связаны с проектированием и ар­хитектурой приложения. Применение ООП и абстрактных классов - ключ к успеху многозвенной архитектуры.