Download - Patrones Con C#
![Page 1: Patrones Con C#](https://reader035.vdocuments.pub/reader035/viewer/2022062319/553ab62b4a7959d9368b45c5/html5/thumbnails/1.jpg)
1
Patrones de diseño con C#
Ing. Matías IaconoMicrosoft MVPOrador Regional Ineta Latam
![Page 2: Patrones Con C#](https://reader035.vdocuments.pub/reader035/viewer/2022062319/553ab62b4a7959d9368b45c5/html5/thumbnails/2.jpg)
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.
![Page 3: Patrones Con C#](https://reader035.vdocuments.pub/reader035/viewer/2022062319/553ab62b4a7959d9368b45c5/html5/thumbnails/3.jpg)
¿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!!!
![Page 4: Patrones Con C#](https://reader035.vdocuments.pub/reader035/viewer/2022062319/553ab62b4a7959d9368b45c5/html5/thumbnails/4.jpg)
¿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.
![Page 5: Patrones Con C#](https://reader035.vdocuments.pub/reader035/viewer/2022062319/553ab62b4a7959d9368b45c5/html5/thumbnails/5.jpg)
5
No re inventar la rueda.
![Page 6: Patrones Con C#](https://reader035.vdocuments.pub/reader035/viewer/2022062319/553ab62b4a7959d9368b45c5/html5/thumbnails/6.jpg)
Patrones por enfoque (GoF).
Patrones Creacionales
•Abstract Factory•Builder•Factory Method•Prototype•Singleton
Patrones Estructurales
•Adapter•Bridge•Composite•Decorator•Facade•Flyweight•Proxy
Patrones de Comportamiento•Chain of Resposability•Command•Interpreter•Iterator•Mediator•Memento•Observer•State•Strategy•Template Method•Visitor
![Page 7: Patrones Con C#](https://reader035.vdocuments.pub/reader035/viewer/2022062319/553ab62b4a7959d9368b45c5/html5/thumbnails/7.jpg)
Otros patrones.Patrones Lógica
de Dominio
•Transaction Script•Domain Model•Table Module•Service Layer
Patrones Objeto-Relacionales de
Comportamiento
•Unit of Work•Identity Map•Lazy Load
Patrones Objeto-Relacionales Estructurales
•Identiy FIeld•Foreing Key Mapping•Association Table Mapping•…
…
•…
![Page 8: Patrones Con C#](https://reader035.vdocuments.pub/reader035/viewer/2022062319/553ab62b4a7959d9368b45c5/html5/thumbnails/8.jpg)
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; } }
![Page 9: Patrones Con C#](https://reader035.vdocuments.pub/reader035/viewer/2022062319/553ab62b4a7959d9368b45c5/html5/thumbnails/9.jpg)
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(); } }
![Page 10: Patrones Con C#](https://reader035.vdocuments.pub/reader035/viewer/2022062319/553ab62b4a7959d9368b45c5/html5/thumbnails/10.jpg)
10
Patrón Iteratorabstract 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"
![Page 11: Patrones Con C#](https://reader035.vdocuments.pub/reader035/viewer/2022062319/553ab62b4a7959d9368b45c5/html5/thumbnails/11.jpg)
11
Otros patrones
![Page 12: Patrones Con C#](https://reader035.vdocuments.pub/reader035/viewer/2022062319/553ab62b4a7959d9368b45c5/html5/thumbnails/12.jpg)
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!
![Page 13: Patrones Con C#](https://reader035.vdocuments.pub/reader035/viewer/2022062319/553ab62b4a7959d9368b45c5/html5/thumbnails/13.jpg)
13
Preguntas
![Page 14: Patrones Con C#](https://reader035.vdocuments.pub/reader035/viewer/2022062319/553ab62b4a7959d9368b45c5/html5/thumbnails/14.jpg)
Más información
Patterns of Enterprise Application Architecture - Martin Fowler