SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Similaire à Patrones Con C#

Buenas prácticas para la construcción de software
Buenas prácticas para la construcción de softwareBuenas prácticas para la construcción de software
Buenas prácticas para la construcción de softwareIker Canarias
 
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
 

Similaire à Patrones Con C# (20)

Buenas prácticas para la construcción de software
Buenas prácticas para la construcción de softwareBuenas prácticas para la construcción de software
Buenas prácticas para la construcción de software
 
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
 

Plus 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
 

Plus 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
 

Dernier

Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)veganet
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressionsConsueloSantana3
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfCESARMALAGA4
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfNataliaMalky1
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 
TEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfTEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfDannyTola1
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPELaura Chacón
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadJonathanCovena1
 
PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfEDILIAGAMBOA
 
La evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariaLa evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariamarco carlos cuyo
 
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxMartín Ramírez
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIAAbelardoVelaAlbrecht1
 

Dernier (20)

Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
Instrucciones para la aplicacion de la PAA-2024b - (Mayo 2024)
 
Uses of simple past and time expressions
Uses of simple past and time expressionsUses of simple past and time expressions
Uses of simple past and time expressions
 
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdfBIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
BIOLOGIA_banco de preguntas_editorial icfes examen de estado .pdf
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 
TEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfTEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdf
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
Plan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPEPlan Año Escolar Año Escolar 2023-2024. MPPE
Plan Año Escolar Año Escolar 2023-2024. MPPE
 
Los Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la SostenibilidadLos Nueve Principios del Desempeño de la Sostenibilidad
Los Nueve Principios del Desempeño de la Sostenibilidad
 
PPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdfPPT_Formación integral y educación CRESE (1).pdf
PPT_Formación integral y educación CRESE (1).pdf
 
La evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundariaLa evolucion de la especie humana-primero de secundaria
La evolucion de la especie humana-primero de secundaria
 
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 

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