El patrón Command permite solicitar una operación a un objeto sin conocer realmente el contenido de esta operación, ni el receptor real de la misma. Para ello se encapsula la petición como un objeto, con lo que además facilita la parametrización de los métodos.
Algo me dice que nos quedamos re cortos con solo estos tres patrones de diseño.
Fuck! 🤦🏼♂️
Mauro explico los patrones muy por encima, seria bueno un curso de solo patrones de diseño
Command
Se trata de un patrón de comportamiento, y este se utiliza cuando existe alguna operación especialmente compleja que debe ser realizada desde diferentes puntos de entrada.
¿Qué es una interfaz y qué son las clases abstractas?
La siguiente explicación menciona a Java pero se puede aplicar a muchos lenguajes de programación las misma definiciones:
🙀
Las clases abstractas cuando tienen métodos define lo que tienen qué hacer pero no cómo se debe de hacer. Estas clases pueden ser heredadas por X clases que necesitemos pero no pueden ser instanciadas.
En Java no se puede heredar de más de una clase, para esto utilizamos las interfaces. Aquí igual se especifica qué se debe de hacer pero no el cómo.
A diferencia de una clase abstracta una interfaz no puede hacer nada por si sola, o sea, que las clases hijas están encargadas de definir el comportamiento de todos los métodos abstractos de forma obligatoria.
En otra palabras, las interfaces serán contratos que indicarán que es lo que se debe de hacer sin proveer ninguna funcionalidad.
Muchas Gracias
Como estamos dentro de la carrera de PHP y como solo vimos tres Patrones de diseño de los tantos que hay, dejo un repositorio donde aplican la mayoria, desconozco si existen más (seguramente), en PHP y estan super explicados y con ejemplos.
Link a GitHub DesignPatternsPHP
Está genial el repositorio! gracias!
un poco mas de lectura sobre este patron de diseño
El mejor recurso que pueden encontrar para patrones de diseño:
DESIGN
PATTERNS
Command: Convierte una solicitud en un objeto independiente que contiene toda la información sobre la solicitud. Esta transformación permite parametrizar métodos con diferentes solicitudes, retrasar o poner en cola la ejecución de una solicitud y respaldar operaciones que no se pueden deshacer.
Prácticamente se refiere a unificar las tareas en una sola clase, que será la encargada de uinificar esos puntos de entrada ejecutar todos los procesos necesarios.
classConexion{public $con =NULL;protectedfunctionobj_db(){// Poner en forma externa la conexion de base de datos. $driver ="mysql"; $servername ="localhost"; $username ="name"; $password ="password"; $charset="SET NAMES utf8"; $dbname ="zulibans_msg";try{ $this->con =new\PDO("$driver:host=$servername;dbname=$dbname;$charset", $username, $password);// set the PDO error mode to exception $this->con->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);return $this->con;}catch(PDOException $e){ echo "Ya se rompió => ".$e->getMessage();}}}
Por cierto para poder usar esto es necesario usarla como herencia y ahí generar la conexion por ejemplo un execute()
Ejemplo
classexecuteextendsConexion{private $ctr;// Private para ayudar a la seguridad.// Instanciamos el metodo que contiene la conexion en el padrefunction__construct(){ $this->ctr = parent::obj_db();}
No olvides agregar un método para ejecutar query y cerrar la conexion dentro de este mismo método.
Saludos.
¿Dónde haces tus apuntes? Se ven muy limpios y claros
Ustedes creen que algunos patrones son conclusiones logicas a las que se llega con la practica? es decir que empiezas a solucionar problemas de manera muy similar a un patron, pero no sabias que ese era un patron, o para que sirve
cuando utilizamos en la consola el comando echo, no conocemos el contenido solo esperamos a que imprima en pantalla
Resumen. Se trata de un patrón de comportamiento y se utiliza usualmente cuando existe una operación compleja y debe de ser realizada desde diferentes puntos de entrada, típicamente cuando desarrollamos una aplicación web y debes realizar la misma operación desde la web ósea responder a una consulta a un visitante como a través de la línea de comandos. Entonces ahí tal vez conviene agrupar esta funcionalidad en una clase que sea capaz de llevar esta tarea.