Профессиональное программирование на PHP

Страница 53 из 591


56 Глава 2 Объектно-ориентированное программирование...

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

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

Типовые проекты обеспечивают номенклатуру для идентификации и классификации проблем. В египетской мифологии божества имели тайные имена, и тот, кто риал эти имена, мог управлять силой богов и смертных. Природа типовых проектов очень похожа. Если разработчик сможет различить действительную природу проблемы и связать ее с известным множеством аналогичных (уже решенных) проблем, то он пройдет большую часть пути к решению данной проблемы.

Было бы неверно утверждать, что одна глава полностью освещает типовые проекты. В последующих разделах рассматривается несколько проектов, главным образом как связующий материал для демонстрации развитых ОО-методик доступных в РНР.

Проект Adaptor

Проект Adaptor (адаптер) используется для предоставления доступа к объекту через специальный интерфейс. В чистом ООязыке проект Adaptor конкретно решает проблемы обеспечения альтернативного API к объекту, но в РНР программисту наиболее часто приходится сталкиваться с данным проектом при создании альтернативного интерфейса к набору процедурных подпрограмм.

Обеспечение возможности связи с классом посредством специального API-интерфейса полезно по двум причинам.

 Если несколько классов, предоставляющих подобные службы, реализуют одинаковый API-интерфейс, то между ними можно переключаться во время выполнения программы. Такая возможность называется полиморфизмом. Полиморфизм — производное от латинских слов, поли — "много" и морф - "форма".

 Предопределенную структуру для воздействия на набор объектов может быть трудно изменить. Если задействован класс стороннего разработчика, не согласующийся с используемым в данной структуре API-интерфейсом, то часто проще всего использовать адаптер для предоставления доступа через ожидаемый API.

Наиболее распространенное использование адаптеров в РНР заключается не в обеспечении альтернативного интерфейса к одному классу посредством другого (потому что количество коммерческого PHP-кода ограничено, а интерфейсы в открытом коде можно изменять непосредственно). Корни РНР уходят в процедурное программирование; следовательно, большинство встроенных PHP-функций по своей природе являются процедурными. Когда необходим последовательный доступ к функциям (например, при создании запроса к базе данных необходимо использовать функции mysgl_pconnect (), mysql_select_db (), mysql_query () и mysql_f etch ()), для хранения информации подключения, как правило, используется ресурс, который передается во все функции. Упаковка всего этого процесса в класс позволяет скрыть значительную часть повторяющейся работы и необходимые функции обработки ошибок.

Идея заключается в создании объектного интерфейса вокруг двух принципиальных ресурсов MySQL-расширения: ресурса подключения и ресурса результата. Целью является не создание истинной абстракции, а просто предоставление кода оболочки




  Hostland.Ru

 «Бесплатный хостинг Hostland.Su» © 2006