1.9 KiB
1.9 KiB
aliases | tags | date | zero-link | parents | linked | |||||
---|---|---|---|---|---|---|---|---|---|---|
|
|
2023-10-26 |
|
|
DI, или "внедрение зависимостей", является формой реализации принципа IoC. Это процесс предоставления внешних зависимостей (объектов или компонентов) объекту. Вместо того чтобы объект сам создавал или искал свои зависимости, они ему предоставляются. Это облегчает тестирование и поддержание кода, так как зависимости могут быть легко заменены или подменены.
Сначала, класс без DI:
public class TextEditor {
private SpellChecker checker;
public TextEditor() {
this.checker = new SpellChecker(); // Зависимость создается внутри класса.
}
public void checkSpelling() {
checker.checkSpelling();
}
}
Теперь, используем DI через конструктор:
public class TextEditor {
private SpellChecker checker;
// Зависимость передается через конструктор.
public TextEditor(SpellChecker checker) {
this.checker = checker;
}
public void checkSpelling() {
checker.checkSpelling();
}
}
Во втором примере SpellChecker
передается в TextEditor
через конструктор, что позволяет обеспечить гибкость. Вы можете легко заменить SpellChecker
на другой класс (например, AdvancedSpellChecker
), не меняя код TextEditor
.