patrones con c#
DESCRIPTION
TRANSCRIPT
1
Patrones de diseño con C#
Ing. Matías IaconoMicrosoft MVPOrador 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.
5
No re inventar la rueda.
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
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•…
…
•…
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 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"
11
Otros patrones
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!
13
Preguntas
Más información
Patterns of Enterprise Application Architecture - Martin Fowler