Los patrones de diseño son básicamente una solución o un modelo para un problema que tenemos una y otra vez en la programación, por lo que son tipos de problemas típicos que podemos encontrar como programadores, y estos patrones de diseño son solo una buena manera de resolver esos problemas. hay muchos patrones de diseño en android. Entonces, básicamente, son tres categorías de la siguiente manera:
- Patrones de creación : Cómo creas objetos.
- Patrones estructurales : cómo se componen los objetos.
- Patrones de comportamiento : cómo coordinas las interacciones de los objetos.
Ahora vamos a discutir los patrones de diseño más importantes que debe conocer.
1. Patrones creacionales
Estos son los patrones de diseño que se ocupan de los mecanismos de creación de objetos, tratando de crear objetos de una manera adecuada a la situación. La forma básica de creación de objetos podría dar lugar a problemas de diseño o complejidad añadida al diseño. Los patrones de diseño creacional resuelven este problema al controlar de alguna manera la creación de este objeto. Estos son los patrones de diseño que se incluyen en esta categoría.
- único
- Constructor
- Inyección de dependencia
- Fábrica
Hablemos rápidamente de ellos:
único :
- El patrón singleton asegura que solo se cree un objeto de una clase en particular. Todas las demás referencias a objetos de la clase singleton se refieren a la misma instancia subyacente. Hay muy pocas aplicaciones, no abuses de este patrón.
- Es muy fácil de lograr en Kotlin pero no en Java. porque en Java no hay una implementación nativa del singleton.
Kotlin
object eSingleton { fun doing() { // ... } }
para acceder al miembro del objeto singleton, puede llamar así:
eSingleton.hacer()
- Al usar el objeto , sabrá que está usando la misma instancia de esa clase en toda su aplicación.
- El patrón constructor se usa para crear objetos complejos con partes constituyentes que deben crearse en el mismo orden o usando un algoritmo específico. Una clase externa controla el algoritmo de construcción. haga clic aquí
fábrica :
- Como sugiere el nombre, Factory se encarga de toda la lógica de creación de objetos. En este patrón, una clase de fábrica controla qué objeto instanciar. El patrón de fábrica es útil cuando se trata de muchos objetos comunes. Puede usarlo donde no desee especificar una clase concreta. haga clic aquí
Inyección de dependencia:
- La inyección de dependencia es como mudarse a un apartamento amueblado. Todo lo que necesitas ya está ahí. No tienes que esperar a que te entreguen los muebles ni seguir las instrucciones de IKEA para montar una estantería Borgsjö.
- En términos de software, la inyección de dependencia le permite proporcionar los objetos necesarios para crear una instancia de un nuevo objeto. Este nuevo objeto no necesita construir o personalizar los propios objetos.
- En Android, es posible que necesite acceder a los mismos objetos complejos desde varios puntos de su aplicación, como un cliente de red, un cargador de imágenes o SharedPreferences para el almacenamiento local. Puede inyectar estos objetos en sus actividades y fragmentos y acceder a ellos de inmediato.
- Actualmente, hay tres bibliotecas principales para inyección de dependencia: Dagger ‘2’, Dagger Hilt y Koin.
2. Patrones Estructurales
Estos patrones de diseño tienen que ver con la composición de clases y objetos. Los patrones de creación de clases estructurales utilizan la herencia para componer interfaces. Los patrones de objetos estructurales definen formas de componer objetos para obtener una nueva funcionalidad.
- Fachada
- Adaptador
- Decorador
- Compuesto
- Proxy de protección
fachada :
- El patrón de fachada se utiliza para definir una interfaz simplificada para un subsistema más complejo.
- El patrón de adaptador se utiliza para proporcionar un enlace entre dos tipos que de otro modo serían incompatibles al envolver el «adaptado» con una clase que admita la interfaz requerida por el cliente.
- El patrón decorador se usa para extender o alterar la funcionalidad de los objetos en tiempo de ejecución envolviéndolos en un objeto de una clase decoradora. Esto proporciona una alternativa flexible al uso de la herencia para modificar el comportamiento.
- El patrón compuesto se utiliza para componer cero o más objetos similares para que puedan manipularse como un solo objeto.
- El patrón de proxy se utiliza para proporcionar un objeto sustituto o de marcador de posición, que hace referencia a un objeto subyacente. El proxy de protección está restringiendo el acceso.
3. Patrones de comportamiento
- Dominio
- Observador
- Estrategia
- Estado
- Visitante
- Mediador
- Recuerdo
- String de responsabilidad
Comando :
- El patrón de comando se utiliza para expresar una solicitud, incluida la llamada a realizar y todos sus parámetros requeridos, en un objeto de comando. El comando puede entonces ejecutarse inmediatamente o retenerse para su uso posterior.
- El patrón de observador se utiliza para permitir que un objeto publique cambios en su estado. Otros objetos se suscriben para ser notificados inmediatamente de cualquier cambio.
- El patrón de estrategia se usa para crear una familia intercambiable de algoritmos de los cuales se elige el proceso requerido en tiempo de ejecución.
Estado :
- El patrón de estado se utiliza para alterar el comportamiento de un objeto a medida que cambia su estado interno. El patrón permite que la clase de un objeto cambie aparentemente en tiempo de ejecución.
- El patrón de visitante se utiliza para separar un conjunto relativamente complejo de clases de datos estructurados de la funcionalidad que se puede realizar sobre los datos que contienen.
- El patrón de diseño de mediador se utiliza para proporcionar un medio de comunicación centralizado entre diferentes objetos en un sistema. Este patrón es muy útil en una aplicación empresarial donde varios objetos interactúan entre sí.
recuerdo :
- El patrón memento es un patrón de diseño de software que brinda la capacidad de restaurar un objeto a su estado anterior (deshacer mediante reversión).
- El patrón de string de responsabilidad se utiliza para procesar diversas requests, cada una de las cuales puede ser tratada por un controlador diferente.
Publicación traducida automáticamente
Artículo escrito por eralokyadav2019 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA