Предпочтение интерфейсов в качестве ссылочных типов:
Если существует подходящий интерфейс, вы должны ссылаться на объекты через него, а не через конкретный класс.
Это относится к параметрам, возвращаемым значениям, переменным и полям.
Гибкость при использовании интерфейсов:
Использование интерфейсов позволяет изменять реализацию, не затрагивая код.
Пример: для перехода с LinkedHashSet на HashSet или TreeSet просто измените конструктор.
Когда НЕ использовать интерфейсы:
Функциональность, специфичная для реализации:
Если реализация предлагает что-то, что не требуется интерфейсом (например, LinkedHashSet гарантирует порядок итерации, а HashSet — нет).
Без соответствующего интерфейса:
Некоторые классы, такие как String или BigInteger, не имеют эквивалентных интерфейсов и должны использоваться напрямую.
Среды на основе классов:
Пример. На выходной поток в пакете java.io ссылаются через абстрактный класс, а не через интерфейс.
Методы, специфичные для реализации:
Пример: PriorityQueue реализует Queue, но имеет метод comparator(), которого нет в Queue. Используйте этот класс только в том случае, если вам нужен этот дополнительный метод.
Выгода:
Использование интерфейсов делает программу более гибкой и модульной, позволяя легко менять реализации, не нарушая существующий код.
Примеры кода
Хороший пример: используйте интерфейс типа
Sets = new LinkedHashSet();
Плохой пример: использование конкретного класса в качестве типа
LinkedHashSets = new LinkedHashSet();
Гибкость: изменение реализации, не затрагивая код
Sets = new TreeSet();
Пример использования финального класса, такого как String
String str = "Hello";
Пример использования базового класса платформы
OutputStream output = new FileOutputStream("file.txt");
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3