SlideShare uma empresa Scribd logo
1 de 14
Patrones de diseño con C# Ing. Matías Iacono Microsoft MVP Orador Regional Ineta Latam
Objetivos de la sesión Conocer prácticas de programación probadas. Recordar prácticas de programación probadas. Recorrer algunos de los patrones más usados.
¿Qué hago aquí? ¿ Cuanto se de Patrones de Diseño? La “F” de GoF no representa Four (4), sino Five (5). Yo fui el quinto Beattles. Detecto, comúnmente, patrones en el código que realizo, o trato de seguir ciertos lineamientos. Quiero sabe de que se trata, aunque escuché y leí algo alguna vez. Mami, tengo mucho miedo!!!
¿Qué es un patrón de diseño? Design Patterns—Elements of Reusable Software, by Gamma, Helm, Johnson, and Vlissides (1995). Solución común, elegante, probada para un problema específico.
No re inventar la rueda.
Patronesporenfoque (GoF).
Otrospatrones.
Patrón Singleton class Singleton     {         private static Singleton instance;         private static object syncLock = new object();         protected Singleton()         { }         public static Singleton GetInstance()         {             if (instance == null)             {                 lock (syncLock)                 {                     if (instance == null)                     {                         instance = new Singleton();                     }                 }             }             return instance;         }     }
Patrón Factory Method abstract class Creator     {         public void DoSomething()         {         }         public abstract SomeObject CreateSomething();     } class ConcreteCreator : Creator     {         public override SomeObject CreateSomething()         {             return new SomeObject();         }     }
Patrón Iterator abstract class Aggregate     {         public abstract Iterator CreateIterator();     }     // "ConcreteAggregate"      class ConcreteAggregate : Aggregate     {         private ArrayList items = new ArrayList();         public override Iterator CreateIterator()         {             return new ConcreteIterator(this);         }         // Property          public int Count         {             get { return items.Count; }         }         // Indexer          public object this[int index]         {             get { return items[index]; }             set { items.Insert(index, value); }         }     }     // "Iterator"
Otrospatrones
Conclusiones Patrones de diseño. Formas de encarar problemas con soluciones probadas. Muchos más patrones de los que creemos. ¡NO RE INVENTAR LA RUEDA!
Preguntas
Más información Patterns of Enterprise Application Architecture - Martin Fowler

Mais conteúdo relacionado

Semelhante a Patrones Con C#

Instituto tecnológico de tijuana
Instituto tecnológico de tijuanaInstituto tecnológico de tijuana
Instituto tecnológico de tijuana
javier
 
Unit Testing - GTUG
Unit Testing - GTUGUnit Testing - GTUG
Unit Testing - GTUG
Jordi Gerona
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
Alelt2890
 
Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2
Axel
 
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup
 

Semelhante a Patrones Con C# (20)

Patrones de Diseño. (Design Patterns).pdf
Patrones de Diseño. (Design Patterns).pdfPatrones de Diseño. (Design Patterns).pdf
Patrones de Diseño. (Design Patterns).pdf
 
Instituto tecnológico de tijuana
Instituto tecnológico de tijuanaInstituto tecnológico de tijuana
Instituto tecnológico de tijuana
 
Testing efectivo con pytest
Testing efectivo con pytestTesting efectivo con pytest
Testing efectivo con pytest
 
Transparencias_Patrones.ppt
Transparencias_Patrones.pptTransparencias_Patrones.ppt
Transparencias_Patrones.ppt
 
Introducción a Unit Testing y TDD
Introducción a Unit Testing y TDDIntroducción a Unit Testing y TDD
Introducción a Unit Testing y TDD
 
05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos
 
Taller 1 6
Taller 1 6Taller 1 6
Taller 1 6
 
Taller 1 6
Taller 1 6Taller 1 6
Taller 1 6
 
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casaTypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
TypeScript para Javeros: Cómo programar web front-end y sentirse como en casa
 
06 patrones
06 patrones06 patrones
06 patrones
 
INTRODUCCIÓN A LA PROGRAMACIÓN - PYTHON.pptx
INTRODUCCIÓN A LA PROGRAMACIÓN - PYTHON.pptxINTRODUCCIÓN A LA PROGRAMACIÓN - PYTHON.pptx
INTRODUCCIÓN A LA PROGRAMACIÓN - PYTHON.pptx
 
Intro classes(1)
Intro classes(1)Intro classes(1)
Intro classes(1)
 
Test unitarios
Test unitariosTest unitarios
Test unitarios
 
Unit Testing - GTUG
Unit Testing - GTUGUnit Testing - GTUG
Unit Testing - GTUG
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en Java
 
Metodo constructor de una clase JAVA
Metodo constructor de una clase JAVAMetodo constructor de una clase JAVA
Metodo constructor de una clase JAVA
 
Taller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataformaTaller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataforma
 
Patrones diseno software
Patrones diseno softwarePatrones diseno software
Patrones diseno software
 
Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2Poo 2009 u2_introd_a_la_poo_2
Poo 2009 u2_introd_a_la_poo_2
 
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
 

Mais de Matias Iacono

Mais de Matias Iacono (20)

NLP with NodeJS and JavaScript
NLP with NodeJS and JavaScriptNLP with NodeJS and JavaScript
NLP with NodeJS and JavaScript
 
A very quick walkthrough on Computer Vision
A very quick walkthrough on Computer VisionA very quick walkthrough on Computer Vision
A very quick walkthrough on Computer Vision
 
Google Media Pipe and Computer Vision
Google Media Pipe and Computer VisionGoogle Media Pipe and Computer Vision
Google Media Pipe and Computer Vision
 
Lo nuevo de C# 10
Lo nuevo de C# 10Lo nuevo de C# 10
Lo nuevo de C# 10
 
Computer Vision con OpenCV y Python
Computer Vision con OpenCV y PythonComputer Vision con OpenCV y Python
Computer Vision con OpenCV y Python
 
Malas prácticas de código
Malas prácticas de códigoMalas prácticas de código
Malas prácticas de código
 
Blazor - La nueva Web?
Blazor - La nueva Web?Blazor - La nueva Web?
Blazor - La nueva Web?
 
Un paseo por C# 9 (Preview)
Un paseo por C# 9 (Preview)Un paseo por C# 9 (Preview)
Un paseo por C# 9 (Preview)
 
Unit Test y TDD
Unit Test y TDDUnit Test y TDD
Unit Test y TDD
 
Gamificación: Aprendizaje a través del juego
Gamificación: Aprendizaje a través del juegoGamificación: Aprendizaje a través del juego
Gamificación: Aprendizaje a través del juego
 
Introducción a IoT
Introducción a IoTIntroducción a IoT
Introducción a IoT
 
Principios solid con c#
Principios solid con c#Principios solid con c#
Principios solid con c#
 
Global AI Tour 2020 - Perceptrón
Global AI Tour 2020 - PerceptrónGlobal AI Tour 2020 - Perceptrón
Global AI Tour 2020 - Perceptrón
 
Old code for code quality
Old code for code qualityOld code for code quality
Old code for code quality
 
Game development
Game developmentGame development
Game development
 
Game development on Blas Pascal University
Game development on Blas Pascal UniversityGame development on Blas Pascal University
Game development on Blas Pascal University
 
Agilidad y psicología
Agilidad y psicologíaAgilidad y psicología
Agilidad y psicología
 
Los principios de la gamificación en la agilidad
Los principios de la gamificación en la agilidadLos principios de la gamificación en la agilidad
Los principios de la gamificación en la agilidad
 
Webinar: Desarrollo de video juegos con HTML5 y JavaScript
Webinar: Desarrollo de video juegos con HTML5 y JavaScriptWebinar: Desarrollo de video juegos con HTML5 y JavaScript
Webinar: Desarrollo de video juegos con HTML5 y JavaScript
 
Paradigmas en educacion
Paradigmas en educacionParadigmas en educacion
Paradigmas en educacion
 

Último

PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdfPROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
EduardoJosVargasCama1
 

Último (20)

Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
PLAN LECTOR 2024 integrado nivel inicial-miercoles 10.pptx
PLAN LECTOR 2024  integrado nivel inicial-miercoles 10.pptxPLAN LECTOR 2024  integrado nivel inicial-miercoles 10.pptx
PLAN LECTOR 2024 integrado nivel inicial-miercoles 10.pptx
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdfPROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
Desarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresDesarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por Valores
 
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdf
 

Patrones Con C#

  • 1. Patrones de diseño con C# Ing. Matías Iacono Microsoft MVP Orador Regional Ineta Latam
  • 2. Objetivos de la sesión Conocer prácticas de programación probadas. Recordar prácticas de programación probadas. Recorrer algunos de los patrones más usados.
  • 3. ¿Qué hago aquí? ¿ Cuanto se de Patrones de Diseño? La “F” de GoF no representa Four (4), sino Five (5). Yo fui el quinto Beattles. Detecto, comúnmente, patrones en el código que realizo, o trato de seguir ciertos lineamientos. Quiero sabe de que se trata, aunque escuché y leí algo alguna vez. Mami, tengo mucho miedo!!!
  • 4. ¿Qué es un patrón de diseño? Design Patterns—Elements of Reusable Software, by Gamma, Helm, Johnson, and Vlissides (1995). Solución común, elegante, probada para un problema específico.
  • 5. No re inventar la rueda.
  • 8. Patrón Singleton class Singleton { private static Singleton instance; private static object syncLock = new object(); protected Singleton() { } public static Singleton GetInstance() { if (instance == null) { lock (syncLock) { if (instance == null) { instance = new Singleton(); } } } return instance; } }
  • 9. Patrón Factory Method abstract class Creator { public void DoSomething() { } public abstract SomeObject CreateSomething(); } class ConcreteCreator : Creator { public override SomeObject CreateSomething() { return new SomeObject(); } }
  • 10. Patrón Iterator abstract class Aggregate { public abstract Iterator CreateIterator(); } // "ConcreteAggregate" class ConcreteAggregate : Aggregate { private ArrayList items = new ArrayList(); public override Iterator CreateIterator() { return new ConcreteIterator(this); } // Property public int Count { get { return items.Count; } } // Indexer public object this[int index] { get { return items[index]; } set { items.Insert(index, value); } } } // "Iterator"
  • 12. Conclusiones Patrones de diseño. Formas de encarar problemas con soluciones probadas. Muchos más patrones de los que creemos. ¡NO RE INVENTAR LA RUEDA!
  • 14. Más información Patterns of Enterprise Application Architecture - Martin Fowler