меня есть черта DbClientUtil, что выглядит следующим образом:Инициализация клиента базы данных в черте
trait DbClientUtil{
lazy val dbClient = //Initializing client here
}
У меня есть объект Dbhelper, который расширяет черту DbClientUtil следующим образом:
object DbHelper extends DbClientUtil{
def sendDbPayload(dbModel:DbModel):Unit = {
dbClient.sendData(dbModel)
}
}
В приведенном выше данный пример sendData
- это метод на dbClient
.
Теперь я хочу выполнить итерацию по коллекции, преобразовать элементы в модель, отправить ее в db и затем закрыть клиент.
Итак, я пишу эту стратегию в следующем объекте
object Runner extends DbClientUtil{
import DbHelper._
List(DbModel("model1"),DbModel("model2"),DbModel("model3")).foreach{
model => sendDbPayload(model)
}
dbClient.shutdown
}
У меня есть два объекта, которые проходят один и тот же признак. DBHelper
и Runner
имеют такую же черту DbClientUtil
. DbClientUtil
инициализирует dbClient
. Инициализированный dbClient
используется как DbHelper
, так и Runner
. Мой вопрос: два раза я инициализирую dbClient
? Мой следующий вопрос был бы, если бы я инициализировал его дважды, что было бы лучшим способом переписать это, чтобы предотвратить любые избыточные инициализации?
Thanks