Общий сценарий: у меня есть библиотека, которая использует другие библиотеки. Например, математическая библиотека (назовем ее foo), которая использует numpy.
Функции foo могут:
- вернуть объект numpy (чистый или унаследованный переопределение)
- вернуть список
- возвращает реализованный foo объект, который ведет себя как numpy (выполняет делегирование)
Три решения также можно переформулировать как:
- foo проходит через внутренне используемый объект, ясно заявляя, что его зависимость от библиотеки также является зависимостью API (поскольку он возвращает объекты, подчиняющиеся интерфейсу библиотеки numpy)
- foo использует общее подмножество объектов, которые являются частью языка.
- foo полностью скрывает то, что использует внутри. Ничто в базовых библиотеках не выходит из библиотеки foo в код клиента.
Мы, конечно, находимся в плюсе-минусе. Прозрачный или непрозрачный? сильная связь с базовыми инструментами или нет? Я знаю упражнение, но я нахожусь в процессе, чтобы сделать этот выбор, и я хочу поделиться мнениями, прежде чем принимать решение. Предложения, идеи, личный опыт очень ценятся.