Patrones de Diseño en C# — Colección práctica y guía para desarrolladores
Patrones de Diseño en C# — Colección práctica y guía para desarrolladores
Resumen: Este artículo describe la solución SernaSistemas.DesignPatterns, una colección de proyectos en C# que implementan patrones de diseño clásicos. Está pensado para desarrolladores que quieren ver implementaciones concretas, ejecutar los ejemplos y entender cuándo aplicar cada patrón.
¿Qué es la solución?
La solución SernaSistemas.DesignPatterns es un conjunto didáctico de proyectos en C# que muestran implementaciones de los patrones de diseño más usados. El repositorio público está en efrainSG/Patrones, donde puedes clonar y explorar el código.
Estructura del repositorio
La solución es un archivo .sln de Visual Studio que agrupa múltiples proyectos (cada patrón en su propio proyecto). Esto facilita compilar por separado o toda la solución.
Proyectos principales incluidos
- Factory
- Adapter
- Bridge
- Chain of Responsibility
- Command
- Iterator
- Mediator
- Builder
- Prototype
- Composite
- Decorator
- Memento
- Observer
- State
- Strategy
- Singleton
- Facade
- Flyweight
- Template
- Visitor
- Proxy
- Tests (proyecto de pruebas)
Proyecto de pruebas
La solución incluye un proyecto de pruebas llamado SernaSistemas.DesignPatterns.Tests. Este proyecto utiliza NUnit y Microsoft.NET.Test.Sdk para ejecutar tests automatizados que validan ejemplos y comportamientos de algunos patrones. En su archivo .csproj aparecen referencias a NUnit, NUnit3TestAdapter y Microsoft.NET.Test.Sdk, y contiene ProjectReferences a proyectos concretos (por ejemplo Bridge, ChainResponsibility, Factory, Adapter), lo que facilita pruebas de integración entre implementaciones.
Para ejecutar las pruebas desde la raíz del repositorio:
dotnet test SernaSistemas.DesignPatterns.Tests/SernaSistemas.DesignPatterns.Tests.csproj
Las pruebas son un buen punto de partida para entender expectativas de comportamiento y ver ejemplos de uso en escenarios controlados.
Patrones incluidos (rápida referencia)
Cada proyecto contiene una o varias implementaciones y ejemplos de uso. A continuación algunas notas rápidas sobre cuándo usar cada patrón:
- Factory: cuando quieras encapsular la creación de objetos y aislar dependencias concretas.
- Singleton: para un único punto de acceso a un recurso compartido (usar con moderación).
- Observer: para comunicaciones publicador/suscriptor dentro de la aplicación.
- Strategy: para intercambiar algoritmos en tiempo de ejecución sin modificar consumidores.
- Decorator: para añadir responsabilidades a objetos de forma dinámica.
- Bridge & Adapter: para desacoplar abstracciones y adaptar interfaces respectivamente.
Cómo compilar y ejecutar
Requisitos: tener instalado .NET 6 SDK. Algunos archivos del repo fueron actualizados para usar net6.0.
Comandos básicos desde la raíz del repo:
dotnet restore
dotnet build SernaSistemas.DesignPatterns.sln
dotnet test SernaSistemas.DesignPatterns.Tests/SernaSistemas.DesignPatterns.Tests.csproj
Si quieres compilar un proyecto específico (por ejemplo el patrón Factory):
dotnet build SernaSistemas.DesignPatterns\SernaSistemas.DesignPatterns.Factory.csproj
Notas:
- Verifica que tengas la versión correcta del SDK con
dotnet --version(debe ser >= 6.0.x). - Si usas Visual Studio, abre
SernaSistemas.DesignPatterns.slny selecciona .NET 6 como Target Framework en las propiedades del proyecto si fuese necesario.
Ejemplos y lectura recomendada
Dentro de cada proyecto encontrarás clases concretas y una clase principal (por ejemplo `Principal.cs` en varios proyectos) que sirve como demo. Algunos consejos para explorar el código:
- Clona el repo:
git clone https://github.com/efrainSG/Patrones.git - Abre la solución en el IDE o inspecciona los proyectos con tu editor preferido.
- Busca `Principal.cs` o `Program.cs` en cada proyecto para ver ejemplos ejecutables.
Fragmento: ejecutar un ejemplo simple
// Ejemplo conceptual (psuedocódigo)
var fabrica = new ConcreteFactory();
var producto = fabrica.Create("tipoA");
producto.DoWork();
// Observa cómo la fábrica encapsula la creación
Conclusiones
Esta solución es ideal como recurso de aprendizaje: implementaciones concisas por patrón, proyectos aislados y ejemplos en los que practicar. Úsala como referencia práctica para entender trade-offs y ver patrones aplicados en C#.
Clona el repo en https://github.com/efrainSG/Patrones y comienza a experimentar.
Comentarios
Publicar un comentario