Singleton в пределах экземпляра класса
Я использую tsyringe и хочу реализовать подобное поведение:
Классы A и B будут инстанцированы отдельно для каждого Module инстанса. Т.е. каждый Module будет иметь свои A и B инстансы, при этом если B зависит от A, он использует инстанс в пределах своего Module. Проще говоря что-то вроде отдельного контейнера с синглтонами для каждого Module.
@injectable()
class A {
constructor() {
console.log('Instance A')
}
}
@injectable()
class B {
constructor(private readonly a: A) {
console.log('Instance A')
}
}
@autoInjectable()
class Module {
constructor(private readonly a?: A, private readonly b?: B) {}
}
console.log(new Module())
// Instance A
// Instance B
// Module { a: A {}, b: B { a: A {} } }
console.log(new Module())
// Instance A
// Instance B
// Module { a: A {}, b: B { a: A {} } }
Могу ли я это реализовать в декораторе, например ContainerModule
@ContainerModule
class Module {
constructor(private readonly a?: A, private readonly b?: B) {}
}