Los patrones de diseño son formas de pensar en la programación.
Proporcionan una colección de consejos, prácticas preparadas, mejores prácticas y conocimientos sobre el desarrollo. Para cada paradigma de programación y tipo de tarea, hay ciertos patrones de diseño que son los más adecuados.
En programación, la resolución de ciertos tipos de problemas es repetitiva, por lo que tiene sentido elegir un método para resolver estos problemas y seguir repitiendo ese método.
El principal beneficio surge especialmente durante el desarrollo en equipo, cuando todos saben cómo se desarrollará la aplicación (según qué patrón de diseño) y simplemente lo aplican. Así se eliminan las innecesarias decenas de horas de depuración de código extrañamente escrito y de intentar comprender los principios que el autor pretendía.
Mi patrón de diseño favorito es MVC
(de Model View Controller
), que dice que la aplicación está dividida en 3 capas independientes que se llaman entre sí secuencialmente y se pasan datos entre sí.
Por ejemplo, al renderizar una página, podría parecer que primero decide qué tipo de página es (por ejemplo, un detalle de categoría), por lo que llama a CategoryController
con el método detail
.
Un ejemplo concreto (estoy simplificando mucho):
class CategoryController{public CategoryManager $categoryManager;public function actionDetail(string $id): void{$this->template->id = $id;$this->template->category = $this->categoryManager->getById($id);}}
Nota:
Esto es sólo un código de ejemplo que explica el principio del patrón de diseño
MVC
.En una implementación real, tendríamos que averiguar además cómo, por ejemplo, obtener una instancia de
CategoryManager
y cómo pasarla a la propiedad. Normalmente, para este tipo de tareas se utiliza la "inyección de dependencias".
Antes de renderizar la página para el detalle de la categoría, el CategoryController
es llamado primero para recibir la petición real (es decir, estamos renderizando el detalle de la categoría con un determinado ID, que es obtenido por el router, por ejemplo, en la URL), obtener los datos (consultando el Model
correspondiente) y pasar los datos finales a la plantilla para su renderización.
La gran ventaja de este principio es que podemos escribir muchos modelos (lógica de la aplicación) que son independientes de la forma en que se presentan los datos (la plantilla), lo que da lugar a un código reutilizable. De hecho, si queremos utilizar el CategoryManager
en otro proyecto, simplemente pasamos los datos a través del Controller
de una manera específica, que se renderizará según la plantilla definida por el propio proyecto, mientras que la lógica de la aplicación sigue siendo la misma y a nadie le importa porque la capa de software ha cumplido con su interfaz y responsabilidades acordadas.
Nota práctica:
El patrón de diseño
MVC
es utilizado por la mayoría de los frameworks modernos como Nette, Symfony, Laravel y otros.También podemos encontrarnos con
MVC
en el desarrollo de aplicaciones móviles y otros tipos de software donde necesitamos obtener datos y renderizarlos en una plantilla según el tipo de página o vista.
Generalmente en programación hay muchos patrones de diseño que no son adecuados para el desarrollo web. Esta lista describe los patrones más importantes que yo mismo utilizo y con los que deberías estar familiarizado.
Puede encontrar una lista completa de todos los patrones de diseño, ejemplos de su uso y explicaciones detalladas en una página aparte.
Modelo
(lógica y datos de la aplicación), Vista
(plantilla y vista de datos) y Controlador
(que une el Modelo
y la Vista
).Inyección de dependencia
, donde cada servicio tiene una sola instancia que se pasa a través de la aplicación).Adaptador
convierte los datos de un tipo al otro (típicamente convirtiendo tipos de datos nativos de PHP a tipos de datos de base de datos y viceversa).Hay muchos más patrones de diseño, estos son los más importantes que debes conocer.
Algunas técnicas de desarrollo de programación se consideran "antipatrón", que es exactamente lo contrario de un patrón de diseño. Suele ser una técnica que produce un código extraño que no puede ser fácilmente depurado, mantenido, y que se comporta de forma "mágica".
Un ejemplo típico es el uso de variables globales.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | es