Table Of ContentIntroducción
a los
Patrones de Diseño
❝ Un código elegante no es aquel que tiene menos líneas, si no el que saca
mayor provecho de ellas ❞
─ Oscar Blancarte (2016)
2 | P á g i n a
Datos del autor:
Ciudad de México
e-mail: [email protected]
Autor y Editor
© Oscar Javier Blancarte Iturralde
Queda expresamente prohibida la reproducción o transmisión, total o parcial, de
este libro por cualquier forma o medio; ya sea impreso, electrónico o mecánico,
incluso la grabación o almacenamiento informáticos sin la previa autorización
escrita del autor.
Composición y redacción:
Oscar Javier Blancarte Iturralde
Edición:
Oscar Javier Blancarte Iturralde
Portada
Arq. Jaime Alberto Blancarte Iturralde
Primera edición
Se publicó por primera vez en Octubre del 2016
V1.5
3 | P á g i n a
Acerca del autor
Oscar Blancarte es originario de Sinaloa, México donde estudió la carrera de
Ingeniería en Sistemas Computacionales y rápidamente se mudó a la Ciudad de
México donde actualmente radica.
Oscar Blancarte es un Arquitecto de software con más de 11 años de experiencia
en el desarrollo y arquitectura de software. Certificado como Java Programmer
(Sun microsystems), Análisis y Diseño Orientado a Objetos (IBM) y Oracle IT
Architect (Oracle).
A lo largo de su carrera, ha trabajado para diversas empresas del sector de TI,
entre las que destacan su participación en diseños de arquitectura de software y
consultoría para clientes de los sectores de Retail, Telco y Health Care.
Oscar Blancarte es además autor de su propio blog
http://www.oscarblancarteblog.com desde el cual está activamente publicando
temas interesantes sobre Arquitectura de software y temas relacionados con la
Ingeniería de Software en general. Desde su blog ayuda a la comunidad a resolver
dudas y es por este medio que se puede tener una interacción más directa con el
autor.
4 | P á g i n a
5 | P á g i n a
Agradecimientos
Este libro tiene una especial dedicación a mi esposa, Liliana, por brindarme todo
su apoyo y amor incondicional. Por estar siempre conmigo y comprenderme
durante la redacción de este libro.
A mis padres, por todos los sacrificios que han hecho para hacerme la persona
que hoy soy.
6 | P á g i n a
Prefacio
Este libro fue creado con la intención de enseñar a sus lectores a utilizar los
patrones de diseño de una forma clara y simple, desde un enfoque práctico y con
escenarios del mundo real.
Tengo que aceptar que este no es un libro convencional de patrones de diseño
debido, principalmente, a que no sigue la misma estructura de las primordiales
obras relacionadas con este tema. En su lugar, me quise enfocar en ofrecer una
perspectiva del mundo real, en donde el lector pueda aprender a utilizar los
patrones de diseño en entornos reales y que puedan ser aplicados a proyectos
reales.
Cuando empecé a estudiar sobre patrones de diseño, me di cuenta que siempre
se explicaban en escenarios irracionales que poco o ninguna vez podrías utilizar,
como por ejemplo para aprender a crear figuras geométricas, hacer una pizza o
crear una serie de clases de animales que ladren o maúllen; esos eran los
ejemplos que siempre encontraba, que si bien explicaban el concepto, se
complicaba entender cómo llevarlos a escenarios reales.
En este libro trato de ir un poco más allá de los ejemplos típicos para crear cosas
realmente increíbles. Por ejemplo:
Crear tu propia consola de línea de comandos.
Crear tu propio lenguaje para realizar consultas SQL sobre un archivo de
Excel.
Crear aplicaciones que puedan cambiar entre más de una base de datos,
por ejemplo, Oracle y MySQL según las necesidades del usuario.
Administrar la configuración global de tu aplicación.
Crear un Pool de ejecuciones para controlar el número de hilos
ejecutándose simultáneamente, protegiendo nuestra aplicación para no
agotar los recursos.
Utilizar proxis para controlar la seguridad de tu aplicación.
7 | P á g i n a
Utilizar estrategias para cambiar la forma en que los usuarios son
autenticados en la aplicación; como podría ser por Base de datos,
Webservice, etcétera.
Crear tu propia máquina de estados para administrar el ciclo de vida de tu
servidor.
Éstos son sólo algunos de los 25 ejemplos que abordaremos en este libro, los
cuales están acompañados, en su totalidad, con el código fuente para que seas
capaz de descargarlos, ejecutarlos y analizarlos desde tu propia computadora.
Finalmente, abordaremos los ejemplos con UML y conceptos fundamentales de
la programación orientada a objetos como lo son la Herencia, Polimorfismo,
Encapsulamiento, Abstracción, Cohesión y Acoplamiento; de los cuales
hablaremos en las secciones A y B de este mismo libro.
8 | P á g i n a
Cómo utilizar este libro
Este libro está compuesto por tres grandes secciones, en las cuales se habla de
los tres tipos de patrones de diseño; Creacionales, Estructurales y de
Comportamiento. Cada patrón de diseño está estructurado de la siguiente
manera:
Introducción: Se explica de forma teórica en qué consiste el patrón de
diseño, su estructura, componentes y cuándo deberíamos utilizarlo.
Escenario: Se expone un escenario de la vida real en el cual podríamos
utilizar el patrón de diseño para después solucionarlo.
Solución: Se intenta resolver el escenario planteado utilizando patrones
de diseño.
Implementación: Manos a la obra, en esta sección utilizaremos código
para programar la solución propuesta.
Ejecución: Ejecutaremos el código desarrollado para comprobar los
resultados tras implementar el patrón de diseño.
Siguientes pasos: Breve resumen de lo aprendido y se plantean una serie
de ejercicios para resolver con la finalidad de afianzar los conocimientos
adquiridos.
El código lo puedes descargar en:
Repositorio:
Java: https://github.com/oscarjb1/IntroduccionPatronesDiseno.git
C#: https://github.com/oscarjb1/design-patterns-cs
Archivo descargable:
Java: https://github.com/oscarjb1/IntroduccionPatronesDiseno/archive/master.zip
C#: https://github.com/oscarjb1/design-patterns-cs.git
NOTA: Este libro tiene un gran diferencial al resto y es que puedes buscarme a
través de mi blog http://www.oscarblancarteblog.com/libros/introduccion-los-
patrones-diseno/para consultarme cualquier duda que tengas y con mucho gusto
te responderé, de igual forma, puedes enviarme tus comentarios y sugerencias
para mejorar este libro.
9 | P á g i n a
Requisitos previos
Este libro está pensado para programadores principiantes que emprenden su
carrera como programadores de software o para programadores avanzados que
no han tenido la oportunidad de tener un entrenamiento apropiado de los patrones
de diseño. Es por esta razón que cualquiera con los conocimientos básicos de la
programación orientada a objetos, podrá entender el contenido de este libro.
Cada patrón de diseño va a acompañado de un diagrama de clases y de
secuencia en UML, por lo que conocimientos básicos de UML pueden ser
requeridos para comprender mejor el patrón.
No te preocupes si no comprendes algunos de los conceptos básicos de POO o
UML ya que en las secciones A y B abordaremos brevemente estos temas.
10 | P á g i n a