Ingeniería Software
Tercer curso del Grado en Ingeniería de las Tecnologías de Telecomunicación (GITT)
Universidad de Sevilla
Este repositorio es un fork del proyecto original master-design-patterns de tvd12.
Repositorio educativo que contiene implementaciones de patrones de diseño clásicos en Java, organizados por capítulos. Cada capítulo es un módulo Maven independiente con ejemplos prácticos y tests.
graph TD
A["🏠 master-design-patterns"] --> B["📦 Patrones Creacionales"]
A --> C["🔄 Patrones de Comportamiento"]
A --> D["🏗️ Patrones Estructurales"]
A --> E["⭐ Capítulos Extras"]
A --> F["📚 Proyectos de Referencia"]
B --> B1["chapter-001-singleton"]
B --> B2["chapter-002-factory"]
B --> B3["chapter-005-builder"]
B --> B4["chapter-006-prototype"]
C --> C1["chapter-008-chain-of-responsibility"]
C --> C2["chapter-009-command"]
C --> C3["chapter-014-observer"]
C --> C4["chapter-015-strategy"]
D --> D1["chapter-019-adapter"]
D --> D2["chapter-022-decorator"]
D --> D3["chapter-024-proxy"]
E --> E1["chapter-ex01-facade"]
E --> E2["chapter-ex02-hexagon"]
E --> E3["chapter-ex03-event-driven"]
F --> F1["chapter-026-clean-project"]
F --> F2["chapter-027-complete-project"]
F --> F3["examples"]
style A fill:#e1f5ff,stroke:#01579b,stroke-width:3px
style B fill:#fff3e0,stroke:#e65100,stroke-width:2px
style C fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
style D fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px
style E fill:#fff9c4,stroke:#f57f17,stroke-width:2px
style F fill:#fce4ec,stroke:#880e4f,stroke-width:2px
El proyecto está organizado como un proyecto Maven multi-módulo, donde cada patrón de diseño tiene su propio capítulo:
- 🔒 chapter-001-singleton: Patrón Singleton (inicialización temprana, perezosa, con doble verificación)
- 🏭 chapter-002-factory: Patrón Factory
- 🔧 chapter-003-factory-method: Patrón Factory Method
- 🏢 chapter-004-abstract-factory: Patrón Abstract Factory
- 🔨 chapter-005-builder: Patrón Builder
- 🧬 chapter-006-prototype: Patrón Prototype
- 🏊 chapter-007-object-pool: Patrón Object Pool
- ⛓️ chapter-008-chain-of-responsibility: Patrón Chain of Responsibility
- 🎮 chapter-009-command: Patrón Command
- 🗣️ chapter-010-interpreter: Patrón Interpreter
- 🔁 chapter-011-iterator: Patrón Iterator (versión tradicional)
- ✨ chapter-011-iterator-clean: Patrón Iterator (versión refactorizada)
- 🤝 chapter-012-mediator: Patrón Mediator
- 💬 chapter-012-mediator-stackoverflow: Patrón Mediator (ejemplo de StackOverflow)
- 💾 chapter-013-memento: Patrón Memento
- 👁️ chapter-014-observer: Patrón Observer
- 🎯 chapter-015-strategy: Patrón Strategy
- 📋 chapter-016-template-method: Patrón Template Method
- 🚶 chapter-017-visitor: Patrón Visitor
- ⚪ chapter-018-null-object: Patrón Null Object
- 🔌 chapter-019-adapter: Patrón Adapter
- 🌉 chapter-020-bridge: Patrón Bridge
- 🌳 chapter-021-composite: Patrón Composite
- 🎁 chapter-022-decorator: Patrón Decorator
- 🪶 chapter-023-flyweight: Patrón Flyweight
- 🛡️ chapter-024-proxy: Patrón Proxy
- 🎭 chapter-ex01-facade: Patrón Facade
- ⬡ chapter-ex02-hexagon: Arquitectura Hexagonal
- 📡 chapter-ex03-event-driven: Arquitectura Dirigida por Eventos
- 🧹 chapter-026-clean-project: Proyecto limpio de referencia
- 🎯 chapter-027-complete-project: Proyecto completo integrado
- 📝 examples: Ejemplos adicionales y referencias
- 🖱️ cursor: Módulo adicional
- 💻 csharp: Implementaciones en C#
- Java 8 o superior
- Maven 3.x
- MySQL Connector 8.0.28 (para algunos ejemplos)
- EzyHTTP 1.1.3 (framework usado en algunos ejemplos)
Para compilar todo el proyecto:
mvn clean installPara compilar un módulo específico:
cd chapter-001-singleton
mvn clean installEjecutar todos los tests:
mvn testEjecutar tests de un capítulo específico:
cd chapter-001-singleton
mvn testCada capítulo sigue una estructura Maven estándar:
chapter-XXX-pattern-name/
├── pom.xml
├── src/
│ ├── main/
│ │ └── java/
│ │ └── com/tvd12/master_design_patterns/
│ └── test/
│ └── java/
│ └── com/tvd12/master_design_patterns/
└── target/
El directorio examples/ contiene un archivo README.md con enlaces a recursos adicionales sobre cada patrón, incluyendo:
Este proyecto es un fork de: https://github.com/tvd12/master-design-patterns
Consulta el repositorio original para información sobre la licencia.
Este repositorio se mantiene con fines educativos y de aprendizaje de patrones de diseño en Java.