Documente Academic
Documente Profesional
Documente Cultură
INGENIERA DE SOFTWARE II
SEMANA 03:
Patrn Fbrica
Objetivos
En este captulo nos enfocaremos en conocer el Factory Pattern ("Patrn
Fbrica"), clasificado como un patrn "Creacional", y en conjunto, iniciamos una
primera introduccin a los diagramas de secuencia. Referencia Wikipedia:
1
Factory Method
Diagrama de Secuencia
INGENIERA DE SOFTWARE II
Escenario 1
Nuestra clase "cliente" (index) necesita trabajar con tres tipos de usuarios, para
ello, tiene acceso directo a las tres clases.
Los diagramas de clase son tiles para conocer las relaciones en nuestro diseo,
pero este tipo de diagramas es "esttico y atemporal", ya que no nos transmite
en qu momento se inician las acciones y cmo se van anidando. Con el
diagrama de secuencia podemos ver cmo para este diseo decidimos que
Index crear las clases en el siguiente orden: primero Usuario, luego Admin y
luego Invitado.
INGENIERA DE SOFTWARE II
Escenario 2
"Necesito encapsular la creacin de objetos de tipo usuario" Solucin 1: crear una
fbrica con mtodos especficos para cada una de las instancias que debe
retornar.
En este nuevo diseo, escondemos el acceso directo a las clases y usamos como
intermediario a la clase "fbrica de usuarios", por lo tanto ya no tenemos un
acoplamiento con todas las clases, solo con quin los crea. A partir de centralizar
la creacin de clases podemos ahora implementar cualquier funcionalidad sobre
ellas (logs, controles, restricciones, etc.).
INGENIERA DE SOFTWARE II
Codificacin
INGENIERA DE SOFTWARE II
Escenario 2
Tengo un paquete que ofrece servicios que no quiero que accedan directamente
desde el exterior a todas mis clases
.
Solucin: Fachada + Factory
Ing. Walter Coayla Mamani.
INGENIERA DE SOFTWARE II
En este caso las clases que solicitan el servicio (Index1, 2 y 3) podran necesitar
solo informacin especfica de los usuarios, por lo que podran no requerir
necesariamente el retorno de una instancia concreta. Para ese caso, la fbrica
sol servir de intermediario y entregar los valores dentro de los objetos Usuario,
Admin e Invitado.
Un diseo alternativo puede ser una solucin fachada + factory, donde se
retornar siempre una instancia que solicitan desde el exterior, y en vez de tener
una clase aparte para la fbrica, hacer un return new dentro de cada mtodo de la
fachada (Fachada + Factory).
Ing. Walter Coayla Mamani.
INGENIERA DE SOFTWARE II
INGENIERA DE SOFTWARE II
Resumen
Singleton, Fachada y Factory son los 3 primeros patrones que generalmente se
aprenden al principio de la lista del catlogo de patrones, principalmente por ser
simples y los ms usados. A continuacin empezaremos a entrar en una segunda
etapa donde aumentaremos la complejidad de los patrones y sus
implementaciones.
INGENIERA DE SOFTWARE II
Patrn Composite
Objetivos
En este captulo nos enfocaremos en conocer el Composite Pattern ("Patrn
Compuesto"), clasificado como un patrn "Estructural".
Referencia Wikipedia:
Composite Pattern
Introduccin
Es muy probable que en algn momento de nuestra vida como desarrolladores
debamos enfrentarnos a un problema recurrente, conocido, tpico y ya
resuelto, como puede ser la necesidad de implementar un algoritmo que
contemple recrear una estructura que se debe componer de forma recursiva,
es decir, que tenemos elementos que pueden contenerse unos a otros.
Composite
La intencin del patrn es componer objetos en una estructura de rbol,
permitiendo tratar objetos individuales y objetos compuestos recursivamente en
forma uniforme.
Es aplicable cuando los objetos se deben componer en forma recursiva, y no hay
distincin (o hay poca) entre objetos compuestos y componentes, y la estructura
se puede tratar en forma uniforme.
El siguiente diagrama describe su estructura en forma genrica:
INGENIERA DE SOFTWARE II
10
INGENIERA DE SOFTWARE II
11
INGENIERA DE SOFTWARE II
12
Codificacin
index.php
INGENIERA DE SOFTWARE II
Elemento.php
13
Archivo.php
Directorio.php
INGENIERA DE SOFTWARE II
14
Prxima tarea
Requerimiento:
"Contamos con un sistema que tiene un disco duro en el cual se pueden
almacenar archivos y directorios. Se requiere desde Index poder decirle el nombre
de un archivo o directorio y nos retorne true / false si este elemento se encuentra
dentro del sistema"
La clase Elemento tendr esta nueva estructura:
INGENIERA DE SOFTWARE II
Reglas:
1. La clase elemento se puede modificar
2. La bsqueda debe ser recursiva.
Entrega:
UML y codificacin
10
Resumen
Este patrn permite representar estructuras compuestas recursivamente y tratar a
todos los elementos de la estructura de la misma manera, sin importar que tipo de
elemento particular es.
Como ventaja asociada, facilita el agregado de nuevos componentes a la
estructura, manteniendo un diseo abierto a la extensin y cerrado a la
modificacin.
15