This repository contains exercises and practices from a university course on software design patterns. It includes examples of the following patterns:
- Factory: Creating objects without specifying the exact class.
- Strategy: Encapsulating algorithms to make them interchangeable.
- Adapter: Integrating classes with incompatible interfaces.
- Composite: Treating individual objects and compositions of objects uniformly.
- Decorator: Dynamically adding responsibilities to objects.
- State: Altering an object's behavior when its internal state changes.
- Observer: Defining a one-to-many dependency between objects.
- Singleton: Ensuring a class has only one instance.
- Facade: Providing a simplified interface to a set of interfaces in a subsystem.
- Language: Java