Как я могу избежать перекрестной ссылки между 2 объектами? - PullRequest
3 голосов
/ 21 марта 2012

У меня есть класс DataAccess, и у него есть ссылка на интерфейс. Интерфейс представляет стратегию кэширования для использования.

Мне бы хотелось, чтобы в стратегии кэширования был что-то вроде метода initalize (), который заполняет кеш при запуске. Однако этот метод потребовал бы, чтобы класс DataAccess получил доступ к данным, и я получаю перекрестную ссылку.

Я также не хочу «загрязнять» интерфейс методами setter, потому что не всем реализациям это понадобится. Также желательно, чтобы в классе DataAccess не было сеттера, так как я хочу, чтобы все поля были окончательными.

Я мог бы создать дополнительный слой, который вызывает dataaccess?

Другие идеи?

1 Ответ

1 голос
/ 21 марта 2012

Вы должны обернуть класс DataAccess классом поиска Cache, который обращается к классу DataAccess, только если он не может получить данные из своего внутреннего кэша. Как вы упомянули, это будет дополнительный слой, но в зависимости от способа его реализации он может быть прозрачным для кода приложения (например, с помощью AOP).

...