Принцип инверсии зависимости и "строка"

Я знаю, что вы не можете создать программу, которая на 100% соответствует принципу инверсии зависимости. Все мы нарушаем это путем создания строк в наших программах, не задумываясь об этом. Поскольку String является классом, а не типом данных, мы всегда становимся зависимыми от конкретного класса.

Мне было интересно, есть ли какие-либо решения для этого (чисто теоретически). Поскольку String в значительной степени является черным ящиком с очень небольшим количеством "утечек" и имеет сложный фоновый алгоритм, я не ожидаю реальной реализации курса:)

1 ответ

Решение

Цель этого принципа - не создавать экземпляры внутри класса и не использовать ключевое слово "new". Поэтому создание экземпляров объектов (или строк) не нарушает принцип.

Принцип также не в том, чтобы всегда создавать абстракцию более высокого уровня (например, интерфейс или базовый класс), чтобы внедрить ее и способствовать более слабой связи. Если абстракция уже является разумной, нет причин пытаться ее улучшить. Какую выгоду вы бы получили, поменяв реализацию строки?

Я на самом деле разместил этот вопрос несколько лет назад (полуактуально): IOC / DI: Регистрация конкретного типа - это запах кода?

Так в чем же принцип? Речь идет о написании компонентов, которые в высокой степени ориентированы на их собственные обязанности, и внедрении компонентов, которые в высокой степени ориентированы на их собственные обязанности. Эти компоненты обычно являются службами при использовании структуры внедрения зависимостей и конструктора, но также могут быть типами данных при выполнении других типов внедрения (например, внедрение метода).

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

Инверсия зависимости заключается не в создании объекта, а в зависимости от модуля высокого / низкого уровня и того, кто определяет домен (объект и интерфейс).

Вы говорите о внедрении зависимости, являющейся частью принципа инверсии контроля.

Другие вопросы по тегам