Está en la página 1de 15

Taller Individual Patrones GOF

David Daniel castro hernandez


Facultad de Ingeniería

VIGILADA MINEDUCACIÓN | Reconocimiento como Universidad: Resolución 303 del 3 de abril de 1967 | Reconocimiento personería jurídica: Decreto 2694 del 12 de diciembre de 1974
Agenda
lunes, 22 de Febrero de 2021

1.Taller para entregar el día


viernes 26 de febrero de 2021.
2.Sustentación de cada caso
3. Singleton y Prototype
Plantilla GoF

TALLER INDIVIDUAL PATRONES GOF


Usted debe tomar un caso problema donde se aplique cada patrón de diseño trabajado en clase.
Por el momento se solicitan los patrones SINGLETON y PROTOTYPE. Utilice la plantilla de diseño:

• Nombre : desarrollo de entregas terrestres.


• Nombres Alternativos.
• Propósito: tratar de implementar este método en el código añadiendo entregas
marítimas.
•Motivación : Imagina que estás creando una aplicación de gestión logística. La
primera versión de tu aplicación sólo es capaz de manejar el transporte en
camión, por lo que la mayor parte de tu código se encuentra dentro de la clase
Camión.

• Al cabo de un tiempo, tu aplicación se vuelve bastante popular. Cada día
recibes decenas de peticiones de empresas de transporte marítimo para que
incorpores la logística por mar a la aplicación.
• Estructura
Plantilla GoF

• Aplicabilidad
El patrón Factory Method sugiere que, en lugar de llamar al operador new para
construir objetos directamente, se invoque a un método fábrica especial. No te
preocupes: los objetos se siguen creando a través del operador new, pero se
invocan desde el método fábrica. Los objetos devueltos por el método fábrica a
menudo se denominan productos.

• Participantes
No obstante, hay una pequeña limitación: las subclases sólo pueden devolver
productos de distintos tipos si dichos productos tienen una clase base o interfaz
común. Además, el método fábrica en la clase base debe tener su tipo de retorno
declarado como dicha interfaz.
Por ejemplo, tanto la clase Camión como la clase Barco deben implementar la
interfaz Transporte, que declara un método llamado entrega. Cada clase
implementa este método de forma diferente: los camiones entregan su carga por
tierra, mientras que los barcos lo hacen por mar. El método fábrica dentro de la
clase LogísticaTerrestre devuelve objetos de tipo camión, mientras que el método
fábrica de la clase LogísticaMarítima devuelve barcos.
• Colaboración Cómo colaboran los participantes para llevar a cabo sus
responsabilidades y proporcionar el comportamiento deseado
• Usos conocidos
Este patrón se usa mucho dentro del JDK y en frameworks como Spring, además
de en un sin número de librerias y especificaciones, ya que uno de sus principales
objetivos es poder ocultar los detalles de la implementación a través de una clase
abstracta o interface para definir y mantener relaciones entre objetos.

• Implementación
Ejemplo del patrón Factory (PHP)
El patrón de diseño del Método Factoría puede utilizarse en diversas aplicaciones
con lenguajes de programación diferentes. Algunos de los representantes más
conocidos son Java, JavaScript, C++, C#, Python, y PHP. Utilizamos este último
lenguaje de programación en el siguiente ejemplo práctico, inspirado por una
entrada de blog de Phpmonkeys.

En este caso, se crea una situación con la clase abstracta Car(Creador) y la clase
Factory CarFactory (ConcreteCreator). La primera se designa de la manera tan
sencilla como sea posible y solo contiene código para establecer un color para el
coche (color por defecto: blanco) y leerlo.
Gracias al patrón Factory, este método Factory tan claramente dispuesto puede
ampliarse con una extensa variedad de funciones adicionales, como otros colores,
marcas de coche o precio.

• Código de ejemplo

class Car {
private $color = null;
public function __construct() {
$this->color = "white";
}
public function setColor($color) {
$this->color = $color;
}
public function getColor() {
return $this->color;
}
}
class CarFactory {
private function __construct() {
}
public static function getBlueCar() {
return self::getCar("blue");
}
public static function getRedCar() {
return self::getCar("red");
}
private static function getCar($color) {
$car = new Car();
$car->setColor($color);
return $car;
}
}
Gracias
UNIVERSIDAD
AUTÓNOMA DEL CARIBE
VIGILADA MINEDUCACIÓN

(+5) 367 1000


CALLE 90 No. 46-112
Barranquilla, Atlántico

Reconocimiento como Universidad:


Resolución 303 del 3 de abril de 1967

Reconocimiento personería jurídica:


Decreto 2694 del 12 de diciembre de 1974

INGRESA A
www.uac.edu.co

También podría gustarte