@onokonem @nuclear_horse . чтобы я вас не очень мучал
Книга чистая архитектура называется, если ее пару раз прочесть, то все очень понятно становится
становится понятна именно чистая архитектура, а не всё 🙂
я не скажу что я по чистой архитектуре выше зреднего, но знаком конечно
Так не все ею пользуются и там (в других архитектурах) свои подходы. А Го вообще (имхо) не очень язык для изучения всяких там архитектур
Да всё проще, чем кажется) Главная вещь - duck typing. Интерфейс объявляется по месту использования. Вернёмся к репозиторию. Вот есть у вас пакет с бизнес-логикой (А). Репо мы будет использовать в нём, значит тут интерфейс репо и объявим. Дальше мы пишем в отдельных пакетах реализации для Postgres (Б), Mongo (В) и мок (Г). Потом в main импортируем один из Б-В-Г и передаём его в конструктор. И всё: переезд на другую базу - 2 строчки кода. Заодно получаем инверсию зависимостей: это репозитории зависят от БЛ, ведь им надо реализовывать интерфейс, который в БЛ. А БЛ зависит только от локальной абстракции (местного интерфейса) т.е ни от чего не зависит.
Ну там отлично рассказано про сам солид, если немного проанализировать и натянуть это все на го, то становится понятно то, о чем говорили выше
вот, вы хороший пример показали. я только часть прокомментирую => как раз я хотел написать что я довольно уверен что легко заменить монгу постресом и наоборот можно только в совсем примитивных случаях
т.е. если исключить этот случаю про "Postgres (Б), Mongo (В) и мок (Г)" в который я, признаться, мало верю, то остаётся БГ или ВГ. так как две буквы - получается мы (практически) только ради Г это всё и делали
Обсуждают сегодня