Есть ли более подходящее решение проблемы с созависимостью 2 классов?
Есть ситуация, где один класс хранит в себе поля 2 экземпляров классов, которые передаются друг другу в конструкторе, от чего ни один ни второй создать не выходит:
class A{
private readonly _instance: B;
constructor(instance: B){
this._instance = instance;
}
}
class B{
private readonly _instance: A;
constructor(instance: A){
this._instance = instance;
}
}
class C{
private readonly _a: A;
private readonly _b: B;
constructor(){
// this._a = new A(this._b)
// this._b = new B(this._a)
}
}
Чтобы создать экземпляр класса A, нужно прежде создать экземпляр класса B, который в свою очередь требует экземпляр класса A и так по кругу.
Есть такой вариант решения:
class A{
private readonly _instanceCallback: () => B;
constructor(instanceCallback: () => B){
this._instanceCallback = instanceCallback;
}
private get _instance(): B{
return this._instanceCallback();
}
}
class B{
private readonly _instanceCallback: () => A;
constructor(instanceCallback: () => A){
this._instanceCallback = instanceCallback;
}
private get _instance(): A{
return this._instanceCallback();
}
}
class C{
private readonly _a: A;
private readonly _b: B;
constructor(){
this._a = new A(() => this._b)
this._b = new B(() => this._a)
}
}
Только такое решение вызывает сомнения. Возможно есть какие-то ещё варианты