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

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.sln y 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:

  1. Clona el repo: git clone https://github.com/efrainSG/Patrones.git
  2. Abre la solución en el IDE o inspecciona los proyectos con tu editor preferido.
  3. 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.

Etiquetas: C# Patrones de Diseño Design Patterns Arquitectura .NET 6 Tutorial Ejemplos

Comentarios

Entradas más populares de este blog

API Multi-Tenant para Expedientes Médicos – Arquitectura, Seguridad y Estado Actual del Proyecto

Paradigmas de programación: distintas formas de pensar el código