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


Для разделения уровней необходимо создать абстракции. Каждый уровень должен быть представлен программной абстракцией: объектно-ориентиро­ванное программирование, проектные схемы и тщательное проектирование служат лучшими инструментами для решения этой задачи.

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

♦ Сопровождаемость

♦ Модульное программирование

♦ Независимость логики и представления

♦ Независимость логики и содержимого

♦ Переносимость

♦ Независимость от типа базы данных

♦ Повторное использование кода

Ниже обсуждаются некоторые из этих вопросов.

Модульное программирование

Необходимость модульного программирования вызывается тем, что без него трудно отделить определенные нами уровни один от другого. Модульное программирование приводит к созданию изолированных и замкнутых моду­лей для каждого логического элемента системы. Лучшим методом повыше­ния модульности кода РНР является применение ООП, поскольку оно спо­собствует тестированию блоков и их взаимодействию, применению методо­логии ХР, проектных схем и повторному использованию кода.

Этой последней возможности необходимо уделить особое внимание. Ее обес­печение облегчает сопровождение программного продукта и сокращает объем работы при кодировании новых приложений.

Независимость логики и представления

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

Независимость логики и содержимого

Изменения содержимого не должны отражаться на логике приложения.

Независимость от типа базы данных

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

Проектирование приложения для опроса

Рассмотрим небольшой пример, на котором проиллюстрируем уровни при­ложения и способы их выделения. В нашем примере приложения для голо­сования есть текущий опрос и все остальные опросы. В каждом опросе есть варианты ответа, и при голосовании пользователя показываются результа­ты опроса.