Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Master Design Patterns

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.

📖 Descripción

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.

📁 Estructura del Proyecto

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
Loading

El proyecto está organizado como un proyecto Maven multi-módulo, donde cada patrón de diseño tiene su propio capítulo:

📦 Patrones Creacionales

  • 🔒 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

🔄 Patrones de Comportamiento

  • ⛓️ 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

🏗️ Patrones Estructurales

  • 🔌 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

⭐ Capítulos Extras

  • 🎭 chapter-ex01-facade: Patrón Facade
  • chapter-ex02-hexagon: Arquitectura Hexagonal
  • 📡 chapter-ex03-event-driven: Arquitectura Dirigida por Eventos

📚 Proyectos de Referencia

  • 🧹 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#

⚙️ Requisitos

  • Java 8 o superior
  • Maven 3.x
  • MySQL Connector 8.0.28 (para algunos ejemplos)
  • EzyHTTP 1.1.3 (framework usado en algunos ejemplos)

🔨 Construcción del Proyecto

Para compilar todo el proyecto:

mvn clean install

Para compilar un módulo específico:

cd chapter-001-singleton
mvn clean install

🧪 Ejecución de Tests

Ejecutar todos los tests:

mvn test

Ejecutar tests de un capítulo específico:

cd chapter-001-singleton
mvn test

📂 Estructura de Cada Módulo

Cada 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/

📚 Referencias y Documentación

El directorio examples/ contiene un archivo README.md con enlaces a recursos adicionales sobre cada patrón, incluyendo:

🔗 Repositorio Original

Este proyecto es un fork de: https://github.com/tvd12/master-design-patterns

📄 Licencia

Consulta el repositorio original para información sobre la licencia.

📌 Notas

Este repositorio se mantiene con fines educativos y de aprendizaje de patrones de diseño en Java.

About

Repositorio con ejemplos de patrones en java

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages