Как разбить рекурсивную зависимость одного класса от другого? У меня есть класс Пользователь.
От него наследуется класс ДругПользователя.
Далее я делаю в классе Пользователь метод ПолучитьДрузей.
В итоге получаю что класс Пользователь зависит от класса ДругПользователя (потому что в методе ПолучитьДрузей я создаю массив экземпляров класса ДругПользователя).
А класс ДругПользователя зависит от класса Пользователь, потому что там идет наследование.
Как мне эту рекурсивную зависимость разбить?
Все это происходит в ангуляре, где эти зависимости прописываются жестко (нет оператора use). Потому такая проблема и возникла.

21 Авг 2019 в 07:02
153 +1
0
Ответы
1

Для разрешения рекурсивной зависимости между классами Пользователь и ДругПользователя в Angular, можно воспользоваться паттерном Dependency Injection.

В данном случае, вы можете создать сервис (например, UserService), который будет содержать метод для получения списка друзей пользователя. Этот сервис может инжектиться как в класс Пользователь, так и в класс ДругПользователя. Таким образом, вы избежите прямой рекурсивной зависимости между этими классами.

Примерно так будет выглядеть ваш код:

import { Injectable } from '@angular/core';
@Injectable()
export class UserService {
constructor() { }
getFriends(userId: number): User[] {
// реализация получения списка друзей пользователя
return [];
}
}
export class User {
constructor(private userService: UserService) {}
getFriends(userId: number): User[] {
return this.userService.getFriends(userId);
}
}
export class FriendOfUser extends User {
constructor(private userService: UserService) {
super(userService);
}
}

Теперь классы User и FriendOfUser используют сервис UserService для получения списка друзей пользователя, и рекурсивная зависимость разрешена.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 436 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир