VGrabko
@VGrabko
Golang, Php, Js

Очень ли пахнет реализация?

У меня есть пакет для работы с сессиями. Сейчас они хранятся в болте но если я захочу к примеру перейти на редис то необходимо будет править код. Я сделал Api для роботы с хранилищем

type SessidFileDriver struct {
	Get func(id string) (string, bool)
	Set func(id, data string) error
	Del func(id string) error
	Up  func(id, data string) error
}


Потом сделал 2 функции. Одна смотрит наружу и принимает 1 параметр func(SessidFileDriver). Отправляет функции в глобальную переменную. И вторая локальная для получения функций в любом месте. Потом сделал я драйвер для Bolt и в методе New просто устанавливаю функции для роботы с бд. Потом если захочу очень просто применю любое из хранилищ.
  • Вопрос задан
  • 419 просмотров
Пригласить эксперта
Ответы на вопрос 1
@ivahaev
Программист, связист и просто хороший человек
Для таких вещей и существуют интерфейсы. Обёртка над Болтом должна реализовать нужные методы. Перейдёте на Редис – напишете обёртку для него.
В зависимости, например, от конфига, будете использовать ту или иную реализацию интерфейса.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы