Область применения интерфейсов объектов.

Gigahard

Новичок
Область применения интерфейсов объектов.

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

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

Gigahard

Новичок
Я не про ООП, а про применимость данных вещей в PHP спрашиваю...
Для меня вот понятна в какой то степени полезность абстрактных классов в C++ в сочетании с остальными механизмами этого языка, но вот ценность подобных (подобных ли?) конструкций в PHP мне не ясна.
По этому и хочется увидеть пример, где реализация кода с применением интерфейсов дает какой либо положительный эффект, а не ведет к пустому нагромождению кодовых конструкций.
 

zerkms

TDD infected
Команда форума
Gigahard
т.е. если php - слаботипизируемый, это значит, что ты должен писать по раздолбайски, передавая аргументы разных типов и не следя за этим?
 

Gigahard

Новичок
zerkms
Кода! Дайте кода! Чтобы ощутить всю глубину концепции! :)
 

HraKK

Мудак
Команда форума
Gigahard
Ценность аналогична что и в С++ что и в друих.
Реализация не важна.
 

dimagolov

Новичок
на dklab.ru был топик на тему "зачем нужны интерфейсы в php". там отвечали на точно такие же вопросы, народ даже примеры не ленился придумывать, местами даже можно было их назвать адекватными.
 

Духовность™

Продвинутый новичок
стандартизация объектов в соответствии с некоторым заранее определенным интерфейсом.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
угу. хороший пример - система плагинов, где можно проверять, умеет ли подключаемый класс имплементровать соответствующий интерфейс.

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

-~{}~ 01.08.08 12:11:

зы. В рамках борьбы за нормальную русскую терминологию, проходящую в соседних темах, не «имплементировать», а «реализовать»
 

zerkms

TDD infected
Команда форума
рискую спровоцировать холивар, но:

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

iceman

говнокодер
Gigahard
для структуры всего проекта.
http://wiki.agiledev.ru/doku.php?id=ooad:manage_dependencies_in_php_code
 

флоппик

promotor fidei
Команда форума
Партнер клуба
в одних языках - это "обязанность", в других - "опция". но совершенно не значит, что ты на пхп будешь писать "иначе". так что - кому как.
собственно, я примерно это и сказал.
 

Gigahard

Новичок
В общем понял... В принципе полезная вещь. Спасибо. В какой то мере - костыль для реализации множественного наследования...
 

zerkms

TDD infected
Команда форума
Gigahard
интерфейсы ни в коем разе не костыль для множественного наследования. даже если ты и понял, то неверно.
 

Gigahard

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

Что не так?
 

dimagolov

Новичок
Не так то, что наследование должно реально отображать сущности, чего от интерфейсов не требуется. Кроме того, иерархию наследования сложней модифицировать.
 

fixxxer

К.О.
Партнер клуба
>>Что не так?

все наоборот

множественное наследование абстрактных классов - это как раз костыль, используемый при отсутствии интерфейсов ;)
 

Angerslave

Новичок
Польза от интерфейсов в том, что если ты подсовываешь методу левый объект он на весь экран орёт "бля, чё это за херня???", а не втихаря пытается с ним работать. И также с реализацией интерфейсов класса. При совместной разработке интерфейсы просто необходимость - если один программист поменял интерфейс, другой, использующий этот интерфейс узнает об обновлении сразу, а не из багрепортов юзеров или логов ошибок.
 
Сверху