2.1 KiB
Домашнее задание №7
📗 В домашнем задании нужно реализовать простой Dependency Injection (DI) контейнер.
DI-контейнер (контейнер внедрения зависимостей) представляет собой шаблон проектирования, который помогает управлять зависимостями в программном приложении. Поподробнее с DI контейнерами можно познакомиться здесь, а также можно посмотреть реализации уже готовых DI контейнеров на Go.
API для DI контейнера будет выглядеть следующим образом:
type Container struct { ... }
func NewContainer() *Container // создать DI контейнер
func (c *Container) RegisterType(name string, constructor interface{}) // зарегистрировать конструктор по созданию типа
func (c *Container) Resolve(name string) (interface{}, error) // создать объект с использованием конструктора
📌 Для выполнения домашнего задания подготовлен шаблон кода и основные тесты, которую помогут проверить корректность реализации конвертации. Шаблона доступен по ссылке.
Задание со звездочкой
Выполнять необязательно, но если вы хотите, можете попробовать дополнительно реализовать метод RegisterSingletonType, который будет возвращать объекты одиночки, а также, если вы уже знакомы c рефлексией и дженериками в Go, то можете их тоже использовать в реализации.