Ho un PersonEditViewModel che ha bisogno di altri due oggetti, personId e PersonRepository . PersonRepository è ottenuto da un localizzatore di servizio:
private final int personId;
public PersonEditViewModel(int id) {
this.personId = id;
this.personRepository = ServiceLocator.get(PersonRepository.class);
}
Ma vorrei usare l'iniezione di dipendenza (DI, IoC) per ottenere PersonRepository , preferibilmente via costruttore:
public PersonEditViewModel(PersonRepository pr) {
this.personRepository = pr;
}
Il mio problema è, come posso passare personId al costruttore nel pattern DI? Devo fare un setter per id - allora DI cambia la logica del PersonEditViewModel (il campo personId non può essere definitivo)? E 'insufficienza del pattern DI che non posso passare oggetti dati al costruttore, o devo cambiare idea e progettare il mio ViewModels in un altro modo, probabilmente usare altri pattern per passare oggetti dati a loro?
Modifica: ha modificato la mia domanda utilizzando personId e PersonRepository per essere più vicini alle situazioni comuni.