Skip to content

About

A comprehensive study and implementation of software design patterns. The aim of this repository is to provide a learning path for developers who want to understand the principles behind popular software design patterns, with practical examples in different programming languages.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

40 Commits

Folders and files

Repository files navigation

♟️ PatternJourney

A comprehensive study and implementation of software design patterns. The aim of this repository is to provide a learning path for developers who want to understand the principles behind popular software design patterns, with practical examples in different programming languages.

Description

The primary goal of this project is to provide a deeper understanding of Software Design Patterns, principles that allow us to manage complexities in software systems by providing reusable solutions to common problems.

This repository covers the following types of Design Patterns:

  1. Creational Pattern: These patterns provide ways to instantiate a single object or a group of related objects. They abstract the instantiation process and help make a system independent of how its objects are created, composed, and represented. Examples include the Singleton, Factory, and Abstract Factory patterns.
  2. Structural Patterns: These patterns are about organizing different classes and objects to form larger structures and provide new functionality. Examples include the Adapter, Decorator, and Composite patterns.
  3. Behavioral Patterns: These patterns are about identifying common communication patterns between objects and realize these patterns. Examples include the Observer, Strategy, and Command patterns.

🌟 Inspiration

This project was inspired by the seminal work, "Design Patterns: Elements of Reusable Object-Oriented Software" by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (aka "The Gang of Four"). Their book is a classic in the field and serves as the foundation for the understanding of software design patterns.

The content and examples in this repository are also inspired and guided by the website Refactoring Guru, an excellent resource for understanding design patterns and how to use them in different programming languages.

Using this Repository

Each design pattern is located in its own directory and includes a brief explanation, UML diagram, and implementation examples in various programming languages. Feel free to explore and use the examples for your own learning or projects.

Contributions

Contributions are more than welcome! Whether it's refining explanations, fixing bugs, or providing additional examples in other languages, please feel free to fork this repository and submit pull requests.

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

About

A comprehensive study and implementation of software design patterns. The aim of this repository is to provide a learning path for developers who want to understand the principles behind popular software design patterns, with practical examples in different programming languages.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages