Как кэшировать экземпляры классов в Groovy - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть следующий метод:

def <T> T getImpl(Class<T> category)
{
        def queryGetter

        if (DDLTool.isOracle())
        {
            queryGetter = // getting oracle implementation based on category (Portal|Portal365)
        }
        else if (DDLTool.isMSSQL())
        {
            queryGetter = // getting mssql implementation based on category (Portal|Portal365)
        }
        else if (DDLTool.isPostgres())
        {
            queryGetter = // getting postgres implementation based on category (Portal|Portal365)
        }

        return queryGetter
}

Категория может быть следующей:

  1. Portal.class
  2. Portal365.class

Схема иерархии:

Category -> Portal | Portal365 -> PostgresQueryGetterPortal/MssqlQueryGetterPortal/OracleQueryGetterPortal |  PostgresQueryGetterPortal356/MssqlQueryGetterPortal365/OracleQueryGetterPortal365

Итак, мне нужно получить необходимую реализацию на основе категории (Portal | Portal365). Кроме того, я не должен использовать classpath каждый раз, когда я вызываю метод. Нужно как-то их кешировать

Как это сделать?

Заранее спасибо

...