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