По общему признанию довольно теоретический вопрос.
И я хотел бы спросить об этом больше с точки зрения разработчика библиотеки, чем пользователя библиотеки.
Хотя цель состоит в том, чтобы обеспечить максимально простой дизайн для пользователя.
Есть ли какие-либо рекомендации / рекомендации о том, как пользователь должен постоянно реализовывать данный интерфейс? Или что где-то есть фабричные функции, создающие разумные объекты, реализующие этот интерфейс?
Конечно, почти во всех случаях это должно быть ясно из контекста. Другая библиотечная функция, ожидающая такой интерфейс в качестве параметра, может не требовать объяснения, откуда это получить. Потому что это будет просто звено в какой-то цепочке.
Но я надеюсь, что некоторые из вас могут представить довольно развитую систему или библиотеку, которую уже не так легко понять.
Как вы можете предотвратить усложнение понимания интерфейсов в отношении основного вопроса о том, существуют ли где-нибудь фабричные функции или пользователю всегда нужно предоставлять собственную реализацию?
Ответ лежит в комментариях, документации или коде?
Я бы просто предположил, что фабричные функции всегда должны объявляться в непосредственной близости от интерфейса. А если нет, то нет.
Но я не знаю, является ли это слишком мягким указанием или, возможно, не может быть реализовано все время.
Задача ещё не решена.
Других решений пока нет …