SlideShare una empresa de 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

Más contenido relacionado

Similar a Patrones Con C#

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).pdfmillonario2
 
Instituto tecnológico de tijuana
Instituto tecnológico de tijuanaInstituto tecnológico de tijuana
Instituto tecnológico de tijuanajavier
 
Testing efectivo con pytest
Testing efectivo con pytestTesting efectivo con pytest
Testing efectivo con pytestHector Canto
 
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 TDDFernando Perez
 
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étodosDanae Aguilar Guzmán
 
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 casaMicael Gallego
 
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.pptxRodmanCevallos1
 
Intro classes(1)
Intro classes(1)Intro classes(1)
Intro classes(1)claudiocj7
 
Unit Testing - GTUG
Unit Testing - GTUGUnit Testing - GTUG
Unit Testing - GTUGJordi Gerona
 
Constructores en Java
Constructores en JavaConstructores en Java
Constructores en JavaAlelt2890
 
Metodo constructor de una clase JAVA
Metodo constructor de una clase JAVAMetodo constructor de una clase JAVA
Metodo constructor de una clase JAVAMANUEL RAMIREZ
 
Taller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataformaTaller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataformaLuis Beltran
 
Patrones diseno software
Patrones diseno softwarePatrones diseno software
Patrones diseno softwarejjegonzalezf
 
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_2Axel
 
.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
 

Similar 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
 

Más de Matias Iacono

NLP with NodeJS and JavaScript
NLP with NodeJS and JavaScriptNLP with NodeJS and JavaScript
NLP with NodeJS and JavaScriptMatias Iacono
 
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 VisionMatias Iacono
 
Google Media Pipe and Computer Vision
Google Media Pipe and Computer VisionGoogle Media Pipe and Computer Vision
Google Media Pipe and Computer VisionMatias Iacono
 
Computer Vision con OpenCV y Python
Computer Vision con OpenCV y PythonComputer Vision con OpenCV y Python
Computer Vision con OpenCV y PythonMatias Iacono
 
Malas prácticas de código
Malas prácticas de códigoMalas prácticas de código
Malas prácticas de códigoMatias Iacono
 
Blazor - La nueva Web?
Blazor - La nueva Web?Blazor - La nueva Web?
Blazor - La nueva Web?Matias Iacono
 
Un paseo por C# 9 (Preview)
Un paseo por C# 9 (Preview)Un paseo por C# 9 (Preview)
Un paseo por C# 9 (Preview)Matias Iacono
 
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 juegoMatias Iacono
 
Principios solid con c#
Principios solid con c#Principios solid con c#
Principios solid con c#Matias Iacono
 
Global AI Tour 2020 - Perceptrón
Global AI Tour 2020 - PerceptrónGlobal AI Tour 2020 - Perceptrón
Global AI Tour 2020 - PerceptrónMatias Iacono
 
Old code for code quality
Old code for code qualityOld code for code quality
Old code for code qualityMatias Iacono
 
Game development on Blas Pascal University
Game development on Blas Pascal UniversityGame development on Blas Pascal University
Game development on Blas Pascal UniversityMatias Iacono
 
Agilidad y psicología
Agilidad y psicologíaAgilidad y psicología
Agilidad y psicologíaMatias Iacono
 
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 agilidadMatias Iacono
 
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 JavaScriptMatias Iacono
 
Paradigmas en educacion
Paradigmas en educacionParadigmas en educacion
Paradigmas en educacionMatias Iacono
 

Más 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

UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docxUNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docxMaria Jimena Leon Malharro
 
animalesdelaproincia de beunos aires.pdf
animalesdelaproincia de beunos aires.pdfanimalesdelaproincia de beunos aires.pdf
animalesdelaproincia de beunos aires.pdfSofiaArias58
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfcarolinamartinezsev
 
Ensayo Paes competencia matematicas 2 Preuniversitario
Ensayo Paes competencia matematicas 2 PreuniversitarioEnsayo Paes competencia matematicas 2 Preuniversitario
Ensayo Paes competencia matematicas 2 Preuniversitariolucianosaldivia3
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxFernando Solis
 
Actividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docxActividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docxpaogar2178
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...jlorentemartos
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdfDemetrio Ccesa Rayme
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024IES Vicent Andres Estelles
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfRosabel UA
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfMercedes Gonzalez
 
Código Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de VenezuelaCódigo Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de Venezuelabeltranponce75
 
UNIDAD DE APRENDIZAJE DE PRIMER GRADO DEL MES DE MAYO PARA TRABAJAR CON ESTUD...
UNIDAD DE APRENDIZAJE DE PRIMER GRADO DEL MES DE MAYO PARA TRABAJAR CON ESTUD...UNIDAD DE APRENDIZAJE DE PRIMER GRADO DEL MES DE MAYO PARA TRABAJAR CON ESTUD...
UNIDAD DE APRENDIZAJE DE PRIMER GRADO DEL MES DE MAYO PARA TRABAJAR CON ESTUD...rosalindatellodelagu
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024IES Vicent Andres Estelles
 
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 ESOluismii249
 
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).pptAlberto Rubio
 

Último (20)

Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docxUNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
 
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
 
animalesdelaproincia de beunos aires.pdf
animalesdelaproincia de beunos aires.pdfanimalesdelaproincia de beunos aires.pdf
animalesdelaproincia de beunos aires.pdf
 
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
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 
Ensayo Paes competencia matematicas 2 Preuniversitario
Ensayo Paes competencia matematicas 2 PreuniversitarioEnsayo Paes competencia matematicas 2 Preuniversitario
Ensayo Paes competencia matematicas 2 Preuniversitario
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
Los dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la VerdadLos dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la Verdad
 
Actividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docxActividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docx
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdf
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
Código Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de VenezuelaCódigo Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de Venezuela
 
UNIDAD DE APRENDIZAJE DE PRIMER GRADO DEL MES DE MAYO PARA TRABAJAR CON ESTUD...
UNIDAD DE APRENDIZAJE DE PRIMER GRADO DEL MES DE MAYO PARA TRABAJAR CON ESTUD...UNIDAD DE APRENDIZAJE DE PRIMER GRADO DEL MES DE MAYO PARA TRABAJAR CON ESTUD...
UNIDAD DE APRENDIZAJE DE PRIMER GRADO DEL MES DE MAYO PARA TRABAJAR CON ESTUD...
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
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
 
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
 

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