Вы знаете, что с точки зрения разработчика JavaScript, пытающегося понять, что, черт возьми, происходит с этими вещами, я хотел бы указать на пару вещей, и кто-нибудь, пожалуйста, скажите мне, что мне здесь не хватает, если Я далеко от цели.
Интерфейсы действительно просты. Тупо, безумно просто. Они настолько глупы, безумно просты, как люди думают вначале, вот почему так много повторяющихся вопросов на эту тему, потому что люди, пытающиеся сделать из них больше, чем они есть, не поняли единственную причину их использования. Широко распространено злоупотребление в каждой кодовой базе Java-сервера, с которой я когда-либо сталкивался.
Итак, почему вы хотите их использовать? Большую часть времени вы не будете. Вы, конечно, не захотите использовать их ВСЕ время, как многие думают. Но прежде чем я доберусь до вас, давайте поговорим о том, чем они НЕ являются.
Интерфейсы НЕ являются:
- В любом случае, это обходной путь для любого механизма наследования, которого нет в Java. Они не имеют ничего общего с наследованием, они никогда этого не делали и никоим образом не имитируют ничего подобного наследованию.
- обязательно что-то, что поможет вам с тем, что вы написали, настолько, насколько это поможет другому парню написать что-то, что должно быть связано с вашим материалом.
Они действительно так просты, как вы думаете, на первый взгляд. Люди все время тупо злоупотребляют, поэтому трудно понять, в чем суть. Это просто проверка / проверка. После того, как вы написали что-то, соответствующее интерфейсу и работающее, удаление этого «реализующего» кода ничего не сломает.
Но если вы используете интерфейсы правильно, вам не захочется его удалять, потому что наличие там дает следующему разработчику инструмент для написания слоя доступа для другого набора баз данных или веб-сервисов, который им нужен для остальной части вашего приложение, чтобы продолжать использовать, потому что они знают, что их класс потерпит неудачу, пока они не получат на 100% полный, как ожидалось, интерфейс. Все интерфейсы проверяют ваш класс и устанавливают, что вы фактически реализовали интерфейс, как и обещали. Ничего больше.
Они также портативны. Предоставляя определения вашего интерфейса, вы можете дать людям, желающим использовать ваш неэкспонированный код, набор методов, которым они должны соответствовать, чтобы их объекты использовали его правильно. Им не нужно реализовывать интерфейсы. Они могут просто записать их на листе блокнота и перепроверить. Но с интерфейсом у вас больше гарантий, что ничто не будет пытаться работать, пока у него не будет подходящей версии рассматриваемого интерфейса.
Итак, какой интерфейс вряд ли когда-либо будет реализован более одного раза? Совершенно бесполезно. Многократное наследование? Хватит тянуться к этой радуге. Во-первых, Java избегает их по какой-то причине, а составные / агрегированные объекты в любом случае более гибки. Это не значит, что интерфейсы не могут помочь вам моделировать способами, которые допускают множественное наследование, но на самом деле это не наследование в любом виде или форме, и его не следует рассматривать как таковое. Это просто гарантия того, что ваш код не будет работать, пока вы не реализовали все методы, которые вы установили, как это было бы.