Preferencia por interfaces como tipos de referencia:
Si existe una interfaz adecuada, debes hacer referencia a objetos a través de ella en lugar de a la clase concreta.
Esto se aplica a parámetros, valores de retorno, variables y campos.
Flexibilidad al usar interfaces:
El uso de interfaces le permite cambiar la implementación sin afectar el código.
Ejemplo: cambiar de LinkedHashSet a HashSet o TreeSet, simplemente cambie el constructor.
Cuándo NO usar interfaces:
Funcionalidad específica de la implementación:
Si una implementación ofrece algo que la interfaz no requiere (por ejemplo, LinkedHashSet garantiza el orden de iteración, pero HashSet no).
Sin una interfaz adecuada:
Algunas clases como String o BigInteger no tienen interfaces equivalentes y deben usarse directamente.
Marcos basados en clases:
Ejemplo: Se hace referencia a OutputStream en el paquete java.io a través de una clase abstracta, no de una interfaz.
Métodos específicos de implementación:
Ejemplo: PriorityQueue implementa Queue, pero tiene un método comparador() que no está presente en Queue. Utilice la clase solo si necesita este método adicional.
Beneficio:
El uso de interfaces hace que el programa sea más flexible y modular, lo que le permite cambiar fácilmente las implementaciones sin romper el código existente.
Ejemplos de código
Buen ejemplo: utilizar la interfaz como tipo
Sets = new LinkedHashSet();
Mal ejemplo: usar la clase concreta como tipo
LinkedHashSets = new LinkedHashSet();
Flexibilidad: Cambiar la implementación sin afectar el código
Sets = new TreeSet();
Ejemplo de uso de una clase final como String
String str = "Hello";
Ejemplo de uso de una clase base de framework
OutputStream output = new FileOutputStream("file.txt");
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3