У меня есть объект домена - предположим, что это Car
- который содержит реализацию репозитория, которую я вводил с помощью кинжала. Когда я тестирую свою сущность, я заменяю хранилище для макетной реализации. Car
также implements Parcelable
.Вкладные зависимости в не-парцелированные объекты - наилучшая практика?
Dagger можно построить объект, когда Car(Engine)
вызывается, но это, очевидно, не в состоянии сделать, когда Car(Parcel)
вызывается, так как он называется внутренне Parcelization Framework (обычно при получении Car
из Intent
).
Полезно ли вводить зависимости вручную в конструкторе Car(Parcel)
? В качестве альтернативы, есть ли наилучшая практика, которую вы могли бы порекомендовать? Инъекционные зависимости в конструкторе Parcel
определенно решат мои проблемы, но рекомендуется, чтобы зависимости не вводились в конструкторы, чтобы поддерживать разделение проблем между инстанцированием и логикой впрыска.
Вот мой домен объект
public class Car implements Parcelable {
@Inject ICarRepository CarRepositoryImpl;
private Engine engine; // User specified engine passed through constructor
public Car(Engine engine) {
this.engine = engine;
}
public Car(Parcel parcel) {
this.engine = getEngine(parcel); // Read engine from parcel
// Inject dependencies here?
}
// Static Parcelable creator and other methods follow...
}
Я не думаю, что кто-нибудь может ответить на этот вопрос. Я не знаю, почему вам нужен «CarRepositoryImpl» в классе модели (похоже, что это должна быть простая модель?) Или почему вы не используете инъекцию конструктора, но вставляете объект как-то в другое место. Кроме того, если каждое поле также является дополнительным, вы можете просто посылить объект и воссоздать его в целом. (Опять же, я думаю, что parcelable/должен просто использоваться классами моделей, следовательно ... почему эта зависимость?) –
Это не модель. Это объект уровня домена, который представляет собой бизнес-логику в моем приложении. Мне нужен репозиторий, поэтому я выступаю в качестве интерфейса между уровнем персистентности и уровнем домена (бизнес-логики). – aashrey99