| |
р, MysqlTable),
лениво плавающего по просторам океана (расположенного в оперативной памяти).
Мы не настолько смелы, чтобы приблизиться к этому киту на достаточно близкое
расстояние и дотронуться до него (не хотим использовать свойства или методы
объекта напрямую). Если уж быть честными, мы даже не видим этого кита (не мо-
жем напрямую использовать в программе этот объект) — он слишком далеко (на
него нет ссылок), и уж подавно не можем его сдвинуть с места (скопировать
объект
в другую переменную). Но зато, как мы знаем, его постоянно сопровождают рыбы-
прилипалы (объекты-интерфейсы), маленькие и юркие (имеющие код небольшого
размера), которые иногда заплывают достаточно далеко, чтобы мы могли с ними
взаимодействовать. Этих рыб нам удалось выдрессировать, так что теперь они
могут
передавать киту любые наши приказы (передавать запросы на обслуживание) —
разумеется, из тех, что сами понимают (для которых имеются соответствующие
методы). Конечно, к киту могут "приклеиваться" рыбы-прилипалы различных видов
и по-разному дрессированные (объект может иметь несколько разных интерфей-
сов). Важно то, что мы не можем взаимодействовать с китом никак иначе, кроме
как
посредством этих рыб-прилипал (не можем напрямую использовать объект). При
этом мы имеем право совершенно свободно разводить прилипал в неволе (копиро-
вать объекты-интерфейсы), ведь киту (главному объекту) нет до этого ровным сче-
том никакого дела (в PHP объект "не знает", сколько у него интерфейсов и как
они
используются).
Глава 31. Объектно-ориентированное программирование на PHP 483
Вроде бы понятно, не правда ли? А теперь давайте уберем все, кроме слов-
связок, но оставим курсив. Вот что у нас получится. "Представим себе объект
большого и сложного класса, например, MysqlTable, расположенный в опе-
ративной памяти. Мы не хотим использовать свойства или методы объекта на-
прямую. Если уж быть честными, мы даже не можем напрямую использовать в
программе этот объект — на него нет ссылок, и уж подавно не способны ско-
пировать объект в другую переменную. Но зато, как мы знаем, его постоянно
"сопровождают" объекты-интерфейсы, имеющие код небольшого размера. Эти
интерфейсы могут передавать запросы на обслуживание — разумеется, из тех,
для которых имеют соответствующие методы. Конечно, объект может иметь
несколько разных интерфейсов. Важно то, что мы не можем напрямую исполь-
зовать объект. При этом мы имеем право копировать объекты-интерфейсы —
главному объекту нет до этого ровным счетом никакого дела. В PHP объект "не
знает", сколько у него интерфейсов и как они используются".
Итак, основная идея такова: отделим интерфейс MysqlTable от его реализации, т.
е.
напишем класс IMysql, с которым и будем всегда работать. Этот класс должен со-
|
|