Разрыв циклических зависимостей с помощью Принципа инверсии зависимостей

В книге Роберта Мартина "Чистая Архитектура" написано:

Существует два метода для того, чтобы разорвать циклическую зависимость:

  1. Применить принцип инверсии зависимостей (Dependency Inversion Principle; DIP) . В этом случае, как показано на рис. 14.3, можно было бы создать интерфейс, определяющий методы, необходимые классу User, затем поместить этот интерфейс в Entities и унаследовать его в Authorizer . Это обратило бы зависимость между Entities и Authorizer и разорвало цикл . 14.3

Но ведь это никак нас не избавить от циклической зависимости, так как вместо этого:

public Entities(Authorizer auth){
      /* some code */
}

Мы получим это:

public Entities(Permission perm) {
      /* some code */
}

Но в конструктор мы все равно будем передавать имплементацию, т.е. Authorizer, которому внутри нужен Entities и ничего не изменится, проблема не уйдет, в чем я не прав?


Ответы (0 шт):