Вопрос знатокам ООП

froggy

Новичок
Вопрос знатокам ООП

Доброе время суток всем!

Вообщем проверяю свои знания по ООП и умение его (ООП) применять. Есть вот такая задачка (чтобы можно было как то выделить текст задачи - выделю его тегами PHP)

PHP:
Концепция - есть некая страница веб-приложения, которое состоит из блоков, каждый блок - по своей сути представляет 
собой некую порцию информации 
связанной с тем контентом который находится на текущей странице веб приложения

Пример:
Страница "Просмотр данных о клиенте" (имя, фамилия, email, телефон, icq). В качестве дополнительных
 блоков могут выступать:

    * текущие проекты
    * текущие счета на оплату
    * выполненные задачи
    * блок комментариев
    * файлы ассоциированные с клиентом (например договор, соглашение и т.п.)

Каждый блок имеет свою презентацию (формат выводимых данных), 
но каждый блок зависит от основного контента - т.е. если просматриваем пользователя А, 
то и текущие проекты должны отображать текущие проекты пользователя А

    * написать на PHP5 интерфейс iTemplate, который должен заниматься рендеренгом (отображением) такой страницы и блоков
    * написать класс на PHP5, реализующий данный интерфейс
    * нюанс - любой блок, как и вся страница целиком может быть кэширована (это должно задаваться на уровне интерфейса)
    * написать тестовое приложение которое рендерит такие блоки (можно использовать примеры, которые прилагаются в zip файле, а можно 

сделать свои - штуки 4,5 - в которых может быть абсолютно любая информация)
Теперь собственно сам вопрос, касающийся использования в данной задачи интерфейсов. Насколько я понимаю - интерфейсы вообще используются в случае когда МНОГО классов реализуют один и тот же интерфейс.
Например при различных субд мы к ним и подключаемся по разному. Т.е. класс tOracle, tMySQL, tPostgres и т.д.
Создаём интерфейс iConnect и реализуем его в каждом классе. Затем пишем (Object как iConnect)->connect. В итоге можем добавить еще несколько СУБД.

В этой задаче говориться об ОДНОМ классе. И вот тут у меня риторический вопрос: нафига козе баян?:)
Т.е. заччем для одно класса писать интерфейс? Подумав я пришел к выводу, что возможно автор имеет в виду что для каждого из "дополнительных блоков" нужно создать класс (tProjects, tScheta, etc) и каждый класс должен по своему реализовать интерфейс iTemplate. Собственно вопрос - правильна ли данная мысль, ну и вообще хотелось бы услышать коментарии профессионалов.
 

dark-demon

d(^-^)b
froggy, фишка в том, что в последствии могут появиться другие классы реализующие этот интерфейс. например - класс рендерящий не в html, а в xml или pdf
 

froggy

Новичок
Так это то я понял. Смысл то вопроса был в следующем: в задаче сказано "написать класс на PHP5". А по идее то надо написать "написать классЫ на PHP5 реализующие данный интерфейс".
Вообщем вроде пояснилось. Спасибо всем.
 

jonjonson

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