Introducción a los patrones de diseño en PHP
Publicado: 2020-04-14Los patrones de diseño de PHP han demostrado ser extremadamente útiles para los desarrolladores y son un gran solucionador de problemas. Para escribir código eficiente, los desarrolladores deben seguir las mejores prácticas. Los patrones de diseño PHP es un concepto de programación orientada a objetos (OOP) que ahora también se utiliza en proyectos de Drupal 8. Con Drupal 8 adoptando conceptos modernos de PHP y OOP, los patrones de diseño se pueden aprovechar para una programación más limpia y robusta.

¿Qué son los patrones de diseño en PHP?
En ingeniería de software, un patrón de diseño es una solución general repetible a un problema común en el diseño de software. Los buenos diseños orientados a objetos deben ser reutilizables, mantenibles y extensibles, y los patrones de diseño en PHP podrían ser muy útiles para hacerlo. No solo ayuda a resolver problemas, sino que implica una forma óptima de abordar desafíos comunes.
Beneficios de usar patrones de diseño PHP
Los principales beneficios de los patrones de diseño en PHP son:
- Los patrones de diseño PHP ayudan a resolver problemas repetitivos que se enfrentan durante el desarrollo
- El uso de patrones de diseño en PHP hace que la comunicación entre diseñadores sea más eficiente.
- Otros desarrolladores que miran su código no tendrán que luchar para entenderlo, ya que el código está bien estructurado con patrones de diseño.
- Seguir las mejores prácticas ayuda a crear un software más sólido
- Ayuda a que el desarrollo sea más rápido y sencillo
Patrones de diseño ampliamente utilizados en PHP
Los patrones de diseño se pueden utilizar en diversas situaciones para resolver problemas similares. Hay alrededor de 23 patrones de diseño que se pueden categorizar ampliamente en tres tipos de patrones de diseño: patrones de creación, estructurales y de comportamiento.
Patrones de creación: Patrones de diseño que se utilizan en los mecanismos de creación de objetos, para crear objetos que se pueden desacoplar del sistema que los implementó.
Patrones estructurales: esto facilita el diseño al identificar formas simples de realizar relaciones entre entidades
Patrones de comportamiento: se utilizan para gestionar relaciones, responsabilidades y algoritmos entre objetos.
Patrón de fábrica
Se utiliza un patrón de fábrica para construir un objeto. Así es, construya un objeto y no cree un objeto. Cuando construimos el objeto, primero lo creamos y luego lo inicializamos. Por lo general, requiere aplicar cierta lógica y realizar varios pasos. Con eso, tiene sentido tener todo eso en un solo lugar y reutilizarlo siempre que necesite tener un nuevo objeto construido de la misma manera. Básicamente, ese es el uso del patrón de fábrica.
Es una gran idea tener una interfaz para nuestra fábrica y que nuestro código dependa de ella y no de una fábrica de concreto.
interfaz FamilyFactoryInterface { público función crear (): Familia } |
A continuación, implemente la interfaz de fábrica con la siguiente clase:
clase FamilyFactory implementos FamilyFactoryInterface { público función crear (): Familia { $ familia = nueva familia (); // inicializa tu familia return $ familia; } } |
Patrón de adaptador
En Adapter Design Pattern, una clase transforma la interfaz de una clase en otra clase. En este ejemplo, tenemos una clase TextBook que tiene los métodos getTitle () y getAuthor (). El cliente espera un método getTitleAndAuthor (). Para "adaptar" SimpleBook para demoAdapter tenemos una clase adaptadora, BookAdapter , que toma una instancia de TextBook y usa los métodos getTitle () y getAuthor () de TextBook en su propio método getTitleAndAuthor.
<? php título $ privado ; $ esto -> autor = $ autor_en; función getTitle () { |
Patrón PHP Singleton
Para limitar la instanciación de una clase a un solo objeto, se utiliza un patrón singleton en PHP. Esto puede resultar útil cuando solo se necesita un objeto en el sistema. Tiene sentido permitir el acceso a una sola instancia de una determinada clase al diseñar aplicaciones web. Para evitar la creación explícita de objetos de la clase de patrón Singleton, se utiliza un constructor privado.
<? php ![]() |
Patrón de observador en PHP
El patrón PHP Observer se usa para alertar al resto del sistema sobre eventos particulares en ciertos lugares.
Por ejemplo, si necesitamos crear un Teatro para mostrar películas a la crítica. Definimos la clase Teatro con el método actual. Antes de presentar la película, queremos enviar mensajes a los celulares de los críticos. Luego, a la mitad de la película, queremos detener la película durante 5 minutos para que los críticos tengan un intervalo. Finalmente, tras el final de la película queremos pedir a los críticos que dejen su respuesta. Entonces, en el patrón de observador para PHP, el objeto de observador solo recibe una notificación cuando se cambia el estado.
Así es como se ve el código:
clase Teatro { |
Patrón de decorador para PHP
El patrón Decorator se usa cuando desea alterar el carácter de un objeto en tiempo de ejecución y, con eso, reducir las herencias innecesarias y el número de clases. Bueno, se puede explicar con ejemplos. Digamos que tenemos las clases Sofa y Bed, y ambas implementan SleeperInterface.
interfaz SleeprInterface { |
Tanto los sofás como las camas tienen el mismo comportamiento para dormir. Ahora, necesitamos otros sofás y camas con funcionalidad adicional que le indiquen a los usuarios el seguimiento del sueño cuando duerman en los sofás o camas. Con la herencia podemos resolver este problema así:
clase SmartSofa se extiende Sofá { |
Ahora tenemos 4 clases en total. Sin embargo, podríamos resolver este problema con 3 clases solo con el patrón Decorator. Así es cómo:
clase SmartSleeper implementos SleeperInterface { |
Aquí, hemos introducido un nuevo tipo de durmiente que actúa como un proxy pero con una funcionalidad adicional encima.
Aprovechando los patrones de diseño en Drupal 8
Si bien hay muchos patrones de diseño ya establecidos dentro de Drupal antes de Drupal 8, Drupal 8 ahora consta de muchos patrones que antes no estaban disponibles. Algunos de estos nuevos patrones reemplazan completamente a algunos más antiguos, mientras que otros introducen algunas características nuevas en Drupal 8.
Los patrones de diseño utilizados en Drupal 8 incluyen:
- Patrón de programación orientado a objetos (OOP)
- Inyecciones de dependencia
- Patrón de fábrica
- Patrón Singleton
La programación orientada a objetos no es realmente un patrón único, sino una forma completamente radical de conceptualizar y estructurar códigos que va mucho más allá de los patrones de diseño. Es la base de muchos patrones de diseño de software populares que se utilizan hoy en día, incluidos los que se utilizan en Drupal 8. Se introdujo en Drupal 7, pero no se utilizó de forma extensiva y no era necesario. La situación en Drupal 8 ahora es diferente, se usa ampliamente y es obligatorio.
Inyección de dependencia
La inyección de dependencia es ese patrón de diseño de software que le permitiría eliminar dependencias codificadas y también hacer posible cambiarlas en tiempo de ejecución o en tiempo de compilación. Agregar la inyección de dependencia es fácil y no interfiere con su código existente. Drupal 8 introdujo el concepto de servicios para desacoplar las funcionalidades reutilizables. core.services.yml es un ejemplo de inyección de dependencia en Drupal 8. Ya hemos discutido sobre Factory Pattern y Singleton Pattern en PHP arriba

