Как правило, я только возвращаю внутренние реализации, если я занимаюсь некоторыми частными, внутренними работами библиотеки и даже так экономно. Для всего, что открыто и, вероятно, будет вызвано извне моего модуля, я использую интерфейсы, а также шаблон Factory.
Использование интерфейсов таким образом оказалось очень надежным способом записи повторно используемых код.
Существует инструмент под названием Dev Toolkit , он позволяет запускать приватный блокчейн, проводник блоков, клиент и т. Д.