«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему в Java следует избегать константных интерфейсов?

Почему в Java следует избегать константных интерфейсов?

Опубликовано 8 ноября 2024 г.
Просматривать:113

Why Should Constant Interfaces Be Avoided in Java?

Загадочная цель констант интерфейса

В Java можно объявлять поля внутри интерфейса, делая их неявно общедоступными, статическими и финал. Это вызвало вопросы среди разработчиков.

Ловушка интерфейса констант

Вопреки ожиданиям, определение констант в интерфейсе считается «антипаттерном константного интерфейса». Как сказано в книге «Эффективная Java» Джошуа Блоха, такая практика излишне раскрывает пользователям детали реализации и препятствует будущим модификациям кода. Кроме того, он привязывает подклассы к константному интерфейсу.

Аномалии платформы

Несмотря на это предупреждение, в стандартной библиотеке Java можно найти несколько константных интерфейсов, например java. io.ObjectStreamConstants. Эти странности не должны служить примерами, а скорее контрастами, которых следует избегать.

Альтернативные подходы

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

public final class Constants {

    private Constants() {}

    public static final double PI = 3.14159;
    public static final double PLANCK_CONSTANT = 6.62606896e-34;
}

Этот подход сохраняет константы конфиденциальными, но при этом легко доступными посредством статического импорта.

import static Constants.PLANCK_CONSTANT;
import static Constants.PI;

public class Calculations {

    public double getReducedPlanckConstant() {
        return PLANCK_CONSTANT / (2 * PI);
    }
}

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

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3