У меня есть некоторые проблемы с проектированием архитектуры кода ... Я пишу веб-приложение на Golang с хранилищем SQL. У меня есть две сущности: Пользователь, Местоположение.
type User struct {
id uint64
....
locationID uint64
....
valueA uint
lastValueAUpdateTimestamp time.Time
}
type Location struct {
id uint
....
}
В сущности "Пользователь" у меня есть динамический параметр (значение A), который обновляется во времени. Значение обновления A зависит от lastValueAUpdateTimestamp и параметров местоположения пользователя.
Как лучше всего передать объект Location пользователю, основываясь на идентификаторе пользователя locationID? У меня есть несколько вариантов:
- Pass объект реестра Location, который имеет функции для получения объекта location из базы данных. У этой опции есть два серьезных недостатка:
- Иногда значение A не требуется, но для каждого создания объекта пользователя мы должны передать этот реестр ...
- Иногда в будущем мы можем добавить объект реестра к другомусущности, и мы получим «большой» конструктор.
- Скрыть все методы в объекте пользователя, связанные с ValueA, создать новую унаследованную структуру, которая получает объект реестра местоположения в конструкторе, и предоставить доступ к методамсвязан с ValueA ..