Предыдущий пример показал использование стандартных методов, но не в практическом сценарии.
Интерфейс Series широко использовался, от него зависело множество программ.
Обнаружено, что в нескольких реализациях Series добавлен метод, который возвращает массив со следующими n элементами серии.
Было решено улучшить интерфейс Series с помощью метода getNextArray(int n), где n задает количество извлекаемых элементов.
До стандартных методов добавление этого метода нарушало бы существующий код, который его не определял.
С помощью стандартных методов новый метод можно добавить в интерфейс Series, не вызывая проблем в существующих кодах.
В некоторых случаях стандартные методы, добавленные в интерфейс, сообщают об ошибке, если они используются, когда невозможно обеспечить реализацию, работающую во всех ситуациях.
Эти методы по умолчанию определяют необязательный код.
В некоторых случаях можно определить метод по умолчанию для работы в любой ситуации.
Метод getNextArray() является примером, поскольку он может быть реализован с использованием метода getNext(), уже необходимого для интерфейса Series.
Новую версию Series можно реализовать с помощью стандартного метода getNextArray().
Стандартный метод getNextArray() реализован с использованием метода getNext(), уже присутствующего в исходной спецификации Series.
Любой класс, реализующий Series, может использовать getNextArray() без необходимости переопределять метод.
Существующий код не будет признан недействительным при добавлении getNextArray().
При необходимости классы могут предоставлять собственную реализацию getNextArray().
Преимущества стандартного метода:
Позволяет интерфейсам развиваться, не делая существующий код недействительным.
Предоставляет дополнительные функции без необходимости реализации заполнителя.
В случае getNextArray(), если реализация Series не нуждается в этом методе, ей не нужно предоставлять реализацию заполнителя, что приводит к более чистому коду.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3