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 logica de instanciacion al cliente

Medellin PHP

Cuando Usarlo

Cuando vamos a crear un objeto que implique algo de logica 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 fabricas individuales pero relacionadas/dependientes sin especificar sus clases concretas

Medellin PHP

Cuando Usarlo

Cuando hay dependencias interrelacionadas que involucra logica 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 generico en una clase, pero la subclase requerida se decide dinamicamente

Medellin PHP

Singleton

Su propósito es tener sólo una instancia del objeto en la aplicación, que manejará todas las llamadas.

 

 

ESTRUCTURALES

Medellin PHP

Data Mapper

Subtitle

Medellin PHP

Cuando Usarlo

Medellin PHP

Subtitle

Decorator

Permite cambiar dinamicamente el comportamiento de un objeto envolviendolo 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 dinamica 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

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

DE COMPORTAMIENTO

Medellin PHP

Chain of Responsabilities

Ayuda a construir una cadena de objetos. La peticion 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

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

Unit of Work

Subtitle

Medellin PHP

Made with Slides.com