Patrones de Diseño en PHP
Medellin PHP
Andrés Quiroz
David Medina
¿Que son patrones de diseño?
-
Basicamente son soluciones reusables a problemas recurrentes o comunes.
-
Guias para abordar problemas en determinadas situaciones
-
No son clases, paquetes o librerias que se importan.
Medellin PHP
Tipos
Creacional
Enfocados en como instanciar los objetos
Estructural
Composición de los objetos
De Comportamiento
Asignación de responsabilidades entre objetos
Medellin PHP
CREACIONALES
Medellin PHP
Simple Factory
Es usada para generar una instancia para el cliente sin exponer lógica de instanciación al cliente
Medellin PHP
Cuando Usarlo
Cuando vamos a crear un objeto que implique algo de lógica y no solo unos pocos asignamientos, para evitar repetir el mismo codigo en todas partes
Medellin PHP
Medellin PHP
Abstract Factory
Encapsula un grupo de fábricas individuales pero relacionadas/dependientes sin especificar sus clases concretas
Medellin PHP
Cuando Usarlo
Cuando hay dependencias interrelacionadas que involucra lógica no tan simple de creacion
Medellin PHP
Medellin PHP
Factory Method
Una súper clase, especifica todos los comportamientos estándar y genéricos y luego delega los detalles de la creación a subclases que son suministrados por el cliente.
Es un patrón de creación que utiliza métodos de fábrica para tratar el problema de crear objetos sin tener que especificar la clase exacta del objeto que se creará
Medellin PHP
Cuando Usarlo
Medellin PHP
Cuando no se sabe que subclase exacta se podria necesitar
Cuando se tiene un proceso génerico en una clase, pero la subclase requerida se decide dinámicamente
Medellin PHP
Singleton
Su propósito es tener sólo una instancia del objeto en la aplicación, que manejará todas las llamadas.
Medellin PHP
ESTRUCTURALES
Medellin PHP
Decorator
Permite cambiar dinámicamente el comportamiento de un objeto envolviéndolo en un objeto 'decorator' sin afectar objetos de la misma clase
Medellin PHP
Cuando Usarlo
Medellin PHP
Cuando se quiere agregar/remover responsabilidades/funcionalidades o modificar atributos a objetos individuales de forma dinámica y transparente
Medellin PHP
Dependency Injection
Su propósito es implementar una arquitectura ligeramente acoplada para obtener un mejor código comprobable, mantenible y extensible.
En palabras simples la inyección de dependencias te permite pasar a través del constructor de la clase todos los objetos que necesita tu clase para funcionar. En palabras aún más simples: Una dependencia es una instancia de la clase B, que la clase A necesita para poder hacer su trabajo.
Medellin PHP
Medellin PHP
Proxy
El patrón proxy trata de proporcionar un objeto intermediario que represente o sustituya al objeto original con motivo de controlar el acceso y otras características del mismo.
El patrón Proxy se usa cuando se necesita una referencia a un objeto más flexible o sofisticada que un puntero.
Medellin PHP
Medellin PHP
DE COMPORTAMIENTO
Medellin PHP
Chain of Responsabilities
Ayuda a construir una cadena de objetos. La petición inicia en un extremo y continua pasando de un objeto a otro hasta encontrar el manejador adecuado
Medellin PHP
Cuando Usarlo
Medellin PHP
Cuando conceptualizas tu programa para usarse como una cadena de llamados
Medellin PHP
Command
Permite encapsular acciones en objetos. La idea clave es proporcionar los medios para desacoplar el cliente del receptor
Medellin PHP
Cuando Usarlo
Medellin PHP
Queremos implementar un sistema basado en transacciones, para mantener el historial de comandos
Medellin PHP
Mediator
Controlar la interaccion entre dos objetos. Reduce el acoplamiento entre las clases que se comunican entre si
Medellin PHP
Cuando Usarlo
Medellin PHP
Cuando no necesitamos tener conocimiento de la implementación de las otras clases.
Medellin PHP
Null Object
No es un patron GoF, pero es un esquema que se repite frecuentemente, sus principales ventajas son:
- El código del cliente se simplifica
- Reduce la probabilidad de excepciones de puntero nulo
- Menos condicionales requieren menos casos de prueba
Medellin PHP
Medellin PHP
Observer
El observador define una relación de uno a muchos de modo que cuando un objeto cambia de estado, los demás son notificados y actualizados automáticamente. Algunas subastas demuestran este patrón
Medellin PHP
Cuando Usarlo
Medellin PHP
Cuando se quiere implementar un sistema de manejado / impulsado por eventos
Medellin PHP
Medellin PHP
MAS INFORMACION
-
https://github.com/kamranahmedse/design-patterns-for-humans
- https://designpatternsphp.readthedocs.io/en/latest/#
Patrones de diseño en PHP
By David Medina
Patrones de diseño en PHP
- 1,589