Почему новое ключевое слово считается высоким сцеплением в Java?

#java #decoupling

#java #развязка

Вопрос:

Я некоторое время работаю над Java. Я видел, что слишком много разговоров о разделении объектов. Я вижу, что они говорят, что ключевое слово «new» считается символом высокой связи. До сих пор я не получил никакого ответа, почему это так. кто-нибудь может мне объяснить?

Комментарии:

1. Да, где они скорее хотели бы видеть инъекцию. Но есть довольно много случаев, возможно, большинство из них, когда вы не вводите, а используете new в любом случае, например, в new List<String> new BigDecimal(...) … кто бы вводил такие вещи?

2. использование нового слова должно куда-то уйти. Итак, вы должны решить, когда выгодно удалить эту связь. Существует ряд библиотек, которые предоставляют эту возможность.

Ответ №1:

Well new создает экземпляр определенного класса. Поэтому всякий раз, когда вы используете new , вы создаете связь между создаваемым классом и кодом, который его создает. Пример:

    List<String> strings = new ArrayList<>();
  

создает экземпляр ArrayList , что является проблемой, если вам не нужно жестко настраивать код для использования этой конкретной реализации List API.

Обратите внимание, что Java new не позволяет вам делать имя класса параметром. Даже с параметрами универсального типа.

Альтернативой является использование заводской функции или объекта или использование внедрения зависимостей для отделения кода, которому требуется экземпляр класса, от процедуры, которая его создает. (Или передавайте Class объекты в качестве параметров и используйте отражение для создания экземпляров.)