DEV Community

Um exemplo mais prático de um método padrão

  • O exemplo anterior mostrou o uso de métodos padrão, mas não em um cenário prático.

  • A interface Series foi amplamente utilizada, com muitos programas dependentes dela.

  • Foi descoberto que várias implementações de Series adicionavam um método que retorna um array com os próximos n elementos da série.

  • Decidiu-se melhorar a interface Series com o método getNextArray(int n), onde n especifica o número de elementos a serem recuperados.

  • Antes dos métodos padrão, adicionar esse método quebraria códigos existentes que não o definissem.

  • Com os métodos padrão, o novo método pode ser adicionado à interface Series sem causar problemas nos códigos existentes.

  • Em alguns casos, métodos padrão adicionados a uma interface relatam um erro se forem usados, quando não é possível fornecer uma implementação que funcione em todas as situações.

  • Esses métodos padrão definem código opcional.

  • Em certos casos, um método padrão pode ser definido para funcionar em qualquer situação.

  • O método getNextArray() é um exemplo, pois ele pode ser implementado usando o método getNext() já exigido pela interface Series.

  • É possível implementar a nova versão de Series com o método padrão getNextArray().

Image description

  • O método padrão getNextArray() é implementado utilizando o método getNext(), já presente na especificação original de Series.

  • Qualquer classe que implemente Series poderá usar getNextArray() sem precisar sobrepor o método.

  • Códigos existentes não serão invalidados com a adição de getNextArray().

  • Classes podem fornecer sua própria implementação de getNextArray() se necessário.

  • Vantagens do método padrão:

  • Permite que interfaces evoluam sem invalidar códigos existentes.

  • Fornece funcionalidade opcional sem exigir uma implementação de espaço reservado.

  • No caso de getNextArray(), se uma implementação de Series não precisar do método, ela não precisará fornecer uma implementação de espaço reservado, resultando em um código mais limpo.

Top comments (0)