Patrones de diseño y principios SOLID.
4.3 (45 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
223 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Patrones de diseño y principios SOLID. to your Wishlist.

Add to Wishlist

Patrones de diseño y principios SOLID.

Descubre los design patterns y los principios SOLID que te permitirán construir aplicaciones más profesionales.
Best Seller
4.3 (45 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
223 students enrolled
Created by Domingo Sebastian
Last updated 6/2017
Spanish
Current price: $10 Original price: $65 Discount: 85% off
5 hours left at this price!
30-Day Money-Back Guarantee
Includes:
  • 3.5 hours on-demand video
  • 1 Article
  • 34 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Assignments
  • Certificate of Completion
What Will I Learn?
  • Crear aplicaciones con los mayores estándares de calidad en flexibilidad, mantenibilidad y elegancia.
  • Dominar el uso de la encapsulación y la composición para construir soluciones sencillas a problemas complejos
  • Identificar situaciones donde el uso de la herencia es peligroso
  • Entender las ideas de los textos clásicos de Erich Gamma, Robert C. Martin, Bertrand Meyer ...
View Curriculum
Requirements
  • Conocimientos básicos de la orientación a objetos
  • Los ejemplos son en Java. Aunque no sea imprescindible, obtendrás más beneficio del curso si tienes nociones básicas del lenguaje Java
  • ¡Ganas de construir soluciones realmente profesionales!
Description

¿No sería genial tener a los grandes programadores sentados a nuestro lado mientras nos enfrentamos a la complicada tarea de programar?

Evidentemente en este curso no te podemos proporcionar este servicio.

Pero sí te podemos ayudar que descubras y entiendas los patrones de diseño. Los patrones de diseño son soluciones generales a problemas que aparecen recurrentemente en las aplicaciones complejas.

Por esto, aunque no puedas tener a tu lado a las mentes más destacadas de la programación, sí puedes tener un catálogo de soluciones generales que han descubierto, analizado y descrito en detalle.

Los autores de estos patrones de diseño han identificado 23 problemas generales que es muy probable que te encuentres o ya te hayas encontrado en tu trabajo. Y para cada uno de ellos, han explicado como se puede resolver de forma elegante y cumpliendo con los requisitos de encapsulación, extensibilidad y otros factores que debe tener un diseño profesional.

El estudio de este catálogo es la parte central del curso. Pero no la única.

Además, explicaremos el que quizá sea el conjunto de principios más conocido para evaluar la calidad de un sistema orientado a objetos: Los principios SOLID. 

Estos principios incluyen algunas de las ideas más profundas e interesantes que los teóricos de la computación han expresado. Principios como el open/closed o el principio de sustitución de Liskov contienen reflexiones muy útiles para los profesionales de la programación pero muchas veces, por ser mal explicadas, se quedan en el ámbito académico. En este curso los explicaremos de forma clara y cambiarán tu percepción de tu propio trabajo.

Espero que, como me sucedió a mi, también la compresión de todo este contenido cambie tu forma de trabajar y te haga disfrutar más de él. 

Who is the target audience?
  • Programadores Java de todos los niveles
Compare to Other Solid Edge Courses
Curriculum For This Course
36 Lectures
03:35:52
+
Introducción
1 Lecture 01:58

¿Como va a ser el curso? ¿Que veremos? ¿En que orden?

Preview 01:58
+
Principios SOLID
6 Lectures 20:41

Introducción al origen del concepto SOLID para referirnos a los 5 principios expresados por Robert C. Martin

Origen
01:31

Un principio sencillo pero fundamental para la construcción de sistemas mantenibles. No crees clases con múltiples responsabilidades.

S - Single responsibility principle (SRP)
02:01

Con este video entenderas otro de los principios más referenciados en el campo de desarrollo del software: el open/closed principle.  Antes de empezar planteate la pregunta: ¿Cuando puedo decir que mi sistema está correctamente diseñado para ser extendido?

O - Open/closed principle (OCP)
03:44

El principio de sustitución de Liskov es uno de los más importantes referidos al tema de la herencia. Veremos en que consiste y algunos casos importantes de violación.

L - Liskov substitution principle (LSP)
06:25

Entendiendo y interiorizando este principio nuestro sistema será más facilmente reusable y evitaremos futuros problemas a nuestros clientes.

I - Interface segregation principle (ISP)
03:18

Principio que expone Martin para evitar la dependencia de módulos más generales a módulos más específicos.

D - Dependency inversion principle (DIP)
03:42
+
Patrones de diseño
2 Lectures 12:28

Si estas con nosotros en el curso ya eres consciente de la importancia de entender los patrones de diseño y los beneficios que pueden reportarte, pero .... ¿conoces su historia? ¿Sabías que los orígenes son más cercanos a plazas y calles que a clases y métodos?

Preview 05:54

En lugar de dar una definición de lo que es un patrón de diseño, ¿que tal si creamos nosotros mismos  uno?

Creando un patrón de diseño
06:34
+
Creational patterns
8 Lectures 52:34

El abstract factory pattern nos ayuda en situaciones donde hay mucha variación en los tipos de objetos a crear según el entorno.

Abstract factory pattern
05:04

Olvídate de estas engorrosas e inusables clases con infinidad de contructores con el Builder pattern.

Builder pattern
08:02

Builder pattern: ejercicio
07:48

Builder pattern: solución ejercicio
10:10

Con este pattern, podrás crear un acceso compartido para crear estructuras complejas y, al mismo tiempo, ofrecer la posibilidad de extender con nuevos subtipos tu aplicación sin modificar el código existente.

Factory method
05:45

Sencilla, pero potente, idea para evitar duplicidades en nuestro código al crear objetos muy similares.

Prototype pattern
04:52

Esto no es un pattern ! ;-)  Aprovechamos la explicación del prototype pattern para hablar del método clone.

El método Object.clone()
06:35

Es muy problable que ya conozcas lo que es un singlenton (si no lo conoces no te preocupes), pero: ¿sabrías implementar uno correctamente?

Singleton pattern
04:18

Repaso sección
2 questions
+
Patrones estructurales
7 Lectures 57:30

Tienes tu sistema bien programado y testeado y te piden que ahora te adaptes a una serie de interfaces externas. ¿Como puedes hacerlo siguiendo el principio open-closed?

Adapter pattern
08:08

Este pattern nos ayudará cuando necesitemos la mejor solución sea crear no una sola jerarquía sino dos, y extender un "puente" entre ellas. Mira bien este pattern: ¡No siempre es trivial saber donde nos puede ayudar!

Bridge pattern
07:24

Es curioso cuantas veces en programación una acción puede ser realizada sobre un solo objeto o una colección de ellos. Evita, con el composite pattern, duplicar la API y complicar a tu diseño en estos casos.

Composite pattern
05:50

No quiero avanzar contenido, pero este API tiene efectos realmente espectaculares en la simplicidad que produce.

Preview 10:22

Has aplicado las recomendaciones generales de diseño y ahora tienes un conjunto de clases e interfaces muy coherentes. Cada una con su responsabilidad bien definida. Pero llega ahora los casos de uso complejos requieren trabajar con muchas de ellas. ¿Como podemos seguir con nuestro diseño modular y, al mismo tiempo, facilitar la vida a nuestros clientes?

Facade pattern
05:21

¿Como podemos conseguir que nuestra aplicación tenga (o parezca tener) muchos objetos dependientes y, al mismo tiempo, haga un uso eficiente de los recursos (por ejemplo memoria)? Bienvenido al flyweight pattern. Y, por cierto, no estaremos solos: ¡También lo aplican los String de Java!

Flyweight pattern
13:27

Añade un toque de seguridad a tus clases sin complicar la vida a los clientes. 

Proxy pattern
06:58

Repaso sección
3 questions
+
Behavioral patterns
10 Lectures 01:09:23

¿Que vamos ha decir del chain of responsability si ya lo hemos descubierto nosotros mismos? Pues poco. Solo repasaremos lo fundamental de este patrón.

Chain of responsability pattern
01:17

Con los lambda en el lenguaje ya podemos "pasar funciones" a métodos, asignarlos a variables etc. Pero si estamos usando una versión anterior a Java 8, o queremos una aproximación más orientada a objetos, el command pattern es fundamental.

Command pattern
08:14

Quizás el pattern más sofisticado. A veces la solución más flexible es crear un "lenguaje dentro del lenguaje". 

Interpreter pattern
10:27

¿Quieres que tus clientes actuen sobre tu estructura de datos sin romper la encapsulación? Pues aquí te ofrecemos dos opciones: envía a tus clientes tu contenido (iterator) y que tu cliente diga que quiere hacer con cada uno de tus objetos (visitor)

Iterator pattern y visitor pattern
07:08

Considera introducir un "mediador" en tus diseño si los mensajes entre los objetos convierte tu diagrama de clases en una maraña de relaciones.

Mediator pattern
04:14

El memento pattern nos ofrece una solución elegante al problema de guardar el estado de un objeto sin exponer detalles de su implementación.

Memento pattern
11:40

Mis clases centrales, las más importantes de la aplicación, las debo modificar continuamente ya que el resto del sistema depende de sus acciones. ¿Te suena este problema? Aplica el observer pattern y será cosa del pasado.

Observer pattern
09:20

Muchos objetos son representables mediante un diagrama de estados. Su comportamiento está muy influenciado según su estado actual. Pero en un lenguaje estáticamente tipado (como Java) un objeto no puede cambiar de tipo una vez creado. Con el state pattern podremos simular estos cambios de comportamiento de forma elegante.

State pattern
07:18

Muy relacionado con el state pattern: no hemos de dejar que la naturaleza de lenguaje estáticamente tipado nos impida ver soluciones flexibles aplicando la "ilusión" de cambiar de implementación según nuestros intereses.

Strategy pattern
05:14

Una de las refactorizaciones más potentes y usadas es el "extract method". Con el template pattern vamos a multiplicar las situaciones donde podemos extraer un comportamiento común para evitar duplicidades en nuestro código.

Template method pattern
04:31

Repaso sección
3 questions
+
Conclusiones
1 Lecture 00:53
Conclusiones
00:53
+
Extras
1 Lecture 00:27
Clase extra: otros cursos
00:27
About the Instructor
Domingo Sebastian
4.4 Average rating
184 Reviews
872 Students
5 Courses
Software Engineer & Trainer

Ingeniero en Informática por la Universitat de les Illes Balears (UIB) y programador certificado en Java.

Llevo desde 1998 trabajando de analista y programador en distintas organizaciones. Empecé trabajando en aplicaciones Oracle con PL/SQL, pero me enganché al Java cuando aún estaba por las versiones 1.1. A partir de aquel momento, he ido trabajando en el interesantísimo ecosistema que se ha ido creando en torno al lenguaje y su máquina virtual.

Tengo más de 10 años de experiencia en formación de Java, JEE, bases de datos, servidores de aplicaciones y herramientas de desarrollo.