хотел не дублировать и точно статически не связывать. То есть логика такая. Каждая библиотека это полностью автономный объект. Его реализация зависит исключительно от разработчика. Классы не подходят потому, что слишком много лишних движений. Загружаем, импортируем, вопрос, что? Класс как называется? А если несколько их там? Хорошо знаем имя, проверяем содержит интерфейс и что если он не содержит? Ты сделал кучу действий чтобы проверить наследует он интерфейс, Карл ты проделал целый путь чтобы просто сказать что ты нам не подходишь? 😂
Интерфейсы для этого и нужны, чтобы гарантировать, что класс реализует нужный функционал
У меня таких вопросов не возникает. Если мне надо сделать, я делаю. И связь нескольких программ я делал уже. Мало того, у меня программа в Линуксе связывалась с программой в винде и давала ей указания. Если мне понадобятся плагины, то я скорее всего через класс это сделаю. Думаю, что это отличное решение будет.
Ну ты же его загрузишь правильно? Ты загрузил библиотеку и после импортируешь класс с неким именем, так? И после этого только проверишь содержит от класс или нет?
Даже если проверку надо делать на то наследует ли класс интерфейс, то это одна строчка кода. Тебе не надо проверять все функции в классе, тебе надо проверить лишь наследует он интерфейс или нет. Если ты реализуешь без класса, через функции, то вот тут уже гарантий нет. Как ты будешь проверять, есть ли в плагине нужная функция ? Это намного больше кода надо писать для проверки всего этого
При наследовании интерфейса, компилятор сам проверит в классе, чтобы были реализованы все функции из него. И тому, кто пишет плагин выдаст ошибку, если что-то не будет реализовано. Это хороший контроль за тем, чтобы плагин был написан верно. При реализации через функции контроля никакого не будет.
Ну хорошо какой ты интерфейс себе представляешь который бы рассказал о чем? Ты не внимательно отнёсся к моим сообщениям, я еще раз говорю, плагин (библиотека) автономна и она должна расшаривать систему в моей неадекватной идеи. Какой интерфейс нужен или о каком интерфейсе говоришь, если каждый предоставляет функции которые: 1. Имеют разный прототип Ну и кастануть ты должен указатель в него, чтобы вызвать.
Смотря что расширять, это слишком обширное понятие
Ну например при реализации торгового терминала, делаешь коннекторы к биржам в виде отдельных плагинов. В интерфейсе реализуешь функции, которые должны реализовывать классы коннекторов, такие как "Получить список интсрументов", "Получить котировки по инструменту", "Открыть позицию по инструменту" и т.д. Потом делаешь например коннектор к бинансу или к московской бирже. Реализуешь его во внешней библиотеке, класс там наследуешь от этого интерфейса. Потом подключаешь коннектор для новой бирже к своему терминалу и видишь всё, что тебе нужно
Вы меня не поняли, я честно не хотел разводить дискуссии, но еще раз спасибо что помогаете. Давайте я покажу в виде неработающего кода.
Обсуждают сегодня