SOLID — От нуля до картошки 5

О принципе инверсии зависимостей (DIP) в этой статье, это будет последняя статья о SOLID.

Сегодня я продолжу объяснять принцип инверсии зависимостей (DIP) в этой статье. Мы будем знакомы с другими принципами в SOLID , потому что, даже если мы не знаем о принципе SOLID , мы можем узнать из кода нашего старшего, различных средних статей и руководств, но вы очень редко услышите, что такое инверсия зависимостей , как мы должны ее использовать и почему мы должны ее использовать.

Кстати, если вы уже работаете Android-разработчиком, не путайте с внедрением зависимостей. Вы уже знакомы с популярными библиотеками Dagger, Hilt и Koin. Эти двое очень разные, поэтому будьте осторожны, когда вы объясняете, особенно в интервью.

Внедрение зависимостей — это метод реализации для заполнения переменных экземпляра класса. Инверсия зависимостей — это общее руководство по проектированию, в котором рекомендуется, чтобы классы имели прямые отношения только с абстракциями высокого уровня.

Принцип инверсии зависимостей (DIP): модули высокого уровня не должны зависеть от модулей низкого уровня; оба должны зависеть от абстракций.

Позвольте мне объяснить вам простую реализацию кода, после чего вы лучше поймете, что такое DIP. Как обычно, давайте начнем с Studentкласса, который зависит от Teacherкласса для выполнения некоторых функций:

class Student(private val teacher: Teacher) {
    fun askQuestion(question: String) {
        teacher.answerQuestion(question)
    }
}

поэтому пусть рефакторинг придерживается DIP , мы можем ввести абстракцию между классами Studentи Teacher:

interface QuestionAnswerer {
    fun answerQuestion(question: String)
}

class Teacher : QuestionAnswerer {
    override fun answerQuestion(question: String) {
        // answer the specified question
    }
}

class Student(private val questionAnswerer: QuestionAnswerer) {
    fun askQuestion(question: String) {
        questionAnswerer.answerQuestion(question)
    }
}

Это соответствует DIP, поскольку Studentкласс теперь зависит от абстракции ( QuestionAnswerer), а не от конкретной реализации ( Teacher). Это обеспечивает большую гибкость и расширяемость, поскольку любой класс, реализующий QuestionAnswererинтерфейс, может использоваться как зависимость для Studentкласса, а не только Teacherкласс.

Увидев версию с рефакторингом, я надеюсь, вы поймете, почему мы также должны использовать инверсию зависимостей , DIP помогает отделить компоненты в вашем приложении и может сделать ваш код более гибким, удобным в сопровождении и более простым для тестирования.

Спасибо, что нашли время прочитать эту статью. Я надеюсь, что мое письмо было информативным и наводящим на размышления. Удачного кодирования для всех вас, чем раньше.

Предыдущая статья о SOLID:

Принцип единой ответственности (SRP) :https://medium.com/arpalar-tech/solid-from-zero-to-potato-e7b5cfe8c7a1

Открытый/закрытый принцип (OCP): https://medium.com/arpalar-tech/solid-from-zero-to-potato-2-5a4c17bd8ec8

Принцип замены Лисков (LSP): https://medium.com/arpalar-tech/solid-from-zero-to-potato-3-94d6f63dbbfe

Принцип разделения интерфейсов (ISP):https://medium.com/arpalar-tech/solid-from-zero-to-potato-4-d1d9b42c3a78

Suggested posts

Поиск информации о доменных именах

Отрывок из книги «Маленькие программные инструменты Sharp» Брайана П. Хогана.

Поиск информации о доменных именах

Когда вы делаете запрос на facebook.com, ваш компьютер ищет доменное имя, чтобы преобразовать это доменное имя в IP-адрес, чтобы ваш компьютер мог установить это соединение.

D-слово и L-слово в дизайне пользовательского интерфейса. Язык имеет значение. Не будь расистом.

D-слово и L-слово в дизайне пользовательского интерфейса. Язык имеет значение. Не будь расистом.

Наш язык является мощным инструментом, который может формировать наши мысли, отношения и действия. Даже кажущиеся безобидными термины могут увековечить вредные предубеждения и стереотипы.

Related posts

Сольное выступление рыжеволосой девушки

По заданию Хайдена Кэти снимает, как она мастурбирует.

Сольное выступление рыжеволосой девушки

Было уже за полночь, когда Хейден отвез Кэти обратно в общежитие колледжа после их совместного вечера. У нее был ранний урок утром, и у нее не было другой смены одежды после того, как она осталась с ним прошлой ночью.

Конкурс Goodreads Reading Challenge токсичен

Конкурс Goodreads Reading Challenge токсичен

Зуд в моей руке распространился, когда я торговалась с местным книгопродавцом за еще одну книгу. Эта книга, как и остальные, которые я купил недавно, займет свое место в моей стопке «Для чтения» (TBR); и тем не менее, я купил его.

Обучение на рабочей неделе важнее, чем вы думаете

Обучение на рабочей неделе важнее, чем вы думаете

Мы часто обнаруживаем, что изо всех сил пытаемся реализовать то, что, как мы знаем, полезно для нас. От того, чтобы сказать значимому другому, что мы любим его, до того, чтобы помнить, что нужно говорить как пират, всегда будут те, кто утверждает, что день, неделя или месяц событий не нужны, потому что они уже делают эти вещи.

местоимения очень страшные

Это поражает меня Внезапно, как это часто бывает, Это снова и снова на полпути <Нет, не то, что в Тихом океане, ты темно-бордовый, то, что на карнавале> Каждый громкий заголовок…..