Страницы

Поиск по вопросам

четверг, 28 марта 2019 г.

Зачем нужны интерфейсы?

Друзья, неоднократно задавался вопросом и задавал вопрос здесь, беспокоит и не даёт покоя мысль о том, зачем нужны интерфейсы в php на пример. Есть кучи примеров, где объяснятся лишь только то что, они задают жёстко типизированную структуру для других классов которые имплементируют и обязаны реализовывать публичные методы, но толку, неужели профит только в этом, бороздя статьи по интерфейсам были такие мнения что они позволяют обойти НЕмножественное наследование, то есть как? Объясните пожалуйста, элементарный пример связи, как это происходит? Допустим есть интерфейс с одним методом. Имплементирующие его классы реализуют его под свои нужды как им хотелось бы, но везде по разному, и это всё? Допустим наследовались от того класса, который имплементировал интерфейс, дальше что? Обновление function game(); }
class outlol implements lol
{ public
function game() { return "outlol"; } }
class inlol implements lol
{ public
function game() { return "inlol"; } }
class anon
{ public
function you(inlol $inlol) { echo $inlol->game(); }
public
function to(outlol $outlol) { echo $outlol->game(); } }
$obj = new anon(); $obj->you(new inlol()); echo "
"; $obj->to(new outlol()); echo "
"; Вернёт соответствующие строки, это и есть пример реализации интерфесов?


Ответ

С интерфейсами можно решать много различных проблем в тех языках, где нет утиной типизации. Например. Можно объявить интерфейс, который будет описывать вывод элемента на экран. Дальше, написать несколько классов, которые реализуют этот интерфейс. Потом создать общую функцию вывода, которая будет получать одним с параметров указатель на класс/объект вывода. Если бы интерфейсов не было, пришлось эти все классы наследовать от одного общего предка. А это не всегда возможно. И если нужно стороннему классу добавить подобную функциональность - очень быстро пишется наследник с нужной реализацией. Второй плюс интерфейсов - класс может реализовывать много интерфейсов. Это актуально там, где нет множественного наследования. Третий плюс интерфейсов - междуязыковое общение (я правда не знаю, работает ли это в php, но точно работает в C/C++, Delphi, .NET). Интерфейс может быть описан в одном месте, а реализован на совсем другом языке. И это не мешает использовать его. Сама Windows активно использует интерфейсы.

Комментариев нет:

Отправить комментарий