Category Archives: Diseño de software

El patrón de diseño factory en PHP

Hay veces que en nuestro código, necesitamos condicionar la instancia de un objeto y otro en función de ciertos parámetros. El patrón de diseño factory en PHP resuelve este problema, abstrayendo a una clase, la responsabilidad de devolver las instancias de los objetos. Este patrón es un patrón de creación de objetos, además, cumple con el principio de inyección de dependencias incluido en los principios SOLID de la programación orientada a objetos

Consideraciones al crear el patrón de diseño factory en PHP

Para poder implementar este patrón en vuestros desarrollos, debéis tener en cuenta las siguientes consideraciones:

  • Las clases de las cuales querremos que la clase factory nos devuelva la instancia, deberán ser una implementación de una interface o una extensión de una clase abstracta, para que podamos llamar a los mismos métodos, sea cual sea la instancia que nos devuelva el objeto.
  • La clase factory que implementemos siempre deberá tener un método estático, que será al que llamaremos para devolver la instancia de la clase que nos interese.

El patrón de diseño factory en PHP en un ejemplo

Como todo se entiende mejor con un ejemplo, vamos a ver uno para que quede claro el patrón.Consideremos la siguiente interfaz y las siguientes clases que lo implementan:

Pongamos que queremos obtener una clase u otra en función del precio.Para conseguir instanciar las clases Coche, Moto y Bicicleta, utilizando el patrón de diseño factory, lo podríamos hacer de la siguiente forma:

A la hora de llamar a  la clase que implementa el patrón de diseño factory en PHP, la llamaríamos de la siguiente forma:

Conclusión

Basándome en mi experiencia, este patrón solo es aplicable en el caso de que vayamos a querer obtener una instancia más de una vez en nuestro código, ya que el tiempo para implementar este patrón, no se amortiza si solamente se necesita hacer una llamada a la clase factory.

Fuente: Wikipedia

1 Star2 Stars3 Stars4 Stars5 Stars (Sin puntuaciones)
Loading...

El patrón de diseño Singleton en PHP

El patrón de diseño singleton en PHP

El patrón de diseño singleton se utiliza cuando necesitamos que un objeto no se instancie varias veces.
El acceso a dicha clase será mediante un método estático que instanciará un objeto privado y estático y lo devolverá, siendo este método la única forma de obtener el método y poder manipularlo.

Consideraciones al crear el patrón de diseño singleton en PHP

Para conseguir evitar que no podamos duplicar ni instanciar el objeto, deberemos sobreescribir los siguientes métodos mágicos de las clases de PHP:

  • Dar visibilidad privada el método __construct.
  • Introducir una excepción al método __clone para que si alguien intenta clonar el método pare la ejecución del código
  • Sobreescribir los métodos __wakeup  y __sleep con una excepción para que no se pueda serializar la clase

El patrón de diseño singleton en PHP en un ejemplo

Un ejemplo claro en el que podemos utilizar este patrón, sería en un objeto de conexión de base de datos.Para hacer queries, no necesitamos hacer una conexión cada vez que vamos a ejecutar una sentencia SQL, por lo que se puede utilizar este patrón de diseño para utilizar únicamente una conexión durante una ejecución de ficheros , evitando a la vez, consumir menos memoria en el tiempo de ejecución del fichero.

Aquí os dejo un ejemplo de una clase PHP, que utilizando este único patrón,devuelve un único objeto mysqli

 
Para poder llamar al objeto y que nos devuelva la instancia para poder utilizarla, deberemos llamarla de esta forma:

1 Star2 Stars3 Stars4 Stars5 Stars (Sin puntuaciones)
Loading...

Principios de diseño de software DRY, KISS y YAGNI

Hoy os enseñare algunos principios de diseño de software que podéis aplicar tanto a la hora de implementar código desde 0, como a la hora de refactorizarlo.Estos principios os serán útiles para aportarles a vuestro código la simplicidad que buscamos a la hora de hacer un código simple y mantenible, y a la vez, reducir las horas que le dedicamos habitualmente. Continue Reading

1 Star2 Stars3 Stars4 Stars5 Stars (2 votos, media: 5,00 de 5)
Loading...

Copyright © 2017. Powered by WordPress & Romangie Theme.