Size: a a a

2021 November 10

c

codingteam@cjr in codingteam
portnov
или не рядом, в другом модуле / пекейдже / whatever
источник

c

codingteam@cjr in codingteam
Minoru
portnov: то есть класс отдельно, реализация интерфейса отдельно?
источник

c

codingteam@cjr in codingteam
portnov
ага
источник

t

ttldtor in codingteam
Pimpl
источник

t

ttldtor in codingteam
ну это в C++
источник

t

ttldtor in codingteam
правда -- этодругое
источник

t

ttldtor in codingteam
в джаве просто делаешь тырфейс, а где-то там делаешь наследника
источник

c

codingteam@cjr in codingteam
portnov
такое бывает надо
1) чтобы прикрутить реализацию интерфейса к классу, поставляемому в сторонней библиотеке;
2) когда надо, чтобы реализация интерфейса была в определённом модуле продукта — а это бывает нужно, когда модули это единицы поставки клиенту. Типа, если клиент не купил фичу, то модуль ему не поставляется.
источник

c

codingteam@cjr in codingteam
Minoru
portnov: в джаве не знаю. В C++ можно «интерфейс» вообще объявить как набор свободных шаблонных функций. Тогда реализации тоже будут свободными функциями, которые как бы ни к чему не привязаны
источник

c

codingteam@cjr in codingteam
Minoru
а, пардон, это будет уже не ООП
источник

t

ttldtor in codingteam
пишется пакет api, он публичный. Там тырфейсы
источник

t

ttldtor in codingteam
пишутся реализации, которые удовлетворяют тырфейсам
источник

t

ttldtor in codingteam
в зависимости от потребностей, используются те или иные имплементации
источник

t

ttldtor in codingteam
вот как Logger в Java API
источник

t

ttldtor in codingteam
правда, это не тыфейс
источник

c

codingteam@cjr in codingteam
portnov
@ttldtor ну в общем случае требования примерно такие
1) есть класс "чукча", он лежит в модуле Чукча, поставляется по запросу
2) есть интерфейс "умеет читать", он лежит в модуле Common, который поставляется всем
3) есть реализация "чукча умеет читать", лежит в модуле ЧукчаУмеетЧитать, который может поставляться по запросу, не обязательно всегда когда поставляется модуль Чукча
источник

c

codingteam@cjr in codingteam
portnov
ну и есть какой-то общий код, который читает при помощи всех кого найдёт
источник

t

ttldtor in codingteam
к сожалению, тебе придётся написать абстрактный класс ЧитающийЧукча
источник

t

ttldtor in codingteam
но можно и миксинами или прокси-классами забабахать, если интроспекция позволяет, но это так...
источник

t

ttldtor in codingteam
возможно понадобится фабрика разных видов чукч, одним из которых будет читающий
источник