This repository provides examples of key design patterns used in software development. It covers behavioral, creational, and structural design patterns, demonstrating how to implement and use them effectively.
- Observer: Defines a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
- Strategy: Defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from the clients that use it.
- Factory: Provides an interface for creating objects in a superclass, but allows subclasses to alter the type of objects that will be created.
- Singleton: Ensures a class has only one instance, and provides a global point of access to it.
- Decorator: Allows behavior to be added to individual objects, dynamically, without affecting the behavior of other objects from the same class.
- Facade: Provides a simplified interface to a complex subsystem.
- Language: Java
- Build Tool: Maven
Each design pattern is implemented in its own directory with detailed explanations and code comments to help you understand the implementation.