This repository contains a collection of software design patterns that I studied and created during my university software design course.
All implementations are written in Java, but the core ideas and principles behind each pattern are language-independent and can be applied to any object-oriented programming language.
The purpose of this repository was to:
- Reinforce my understanding of software design principles
- Provide example of simple implementations of some of the many design patterns
- Help other students learn design patterns through practical examples
- Serve as a long-term reference for object-oriented design
- Adapter
- Builder
- Factory
- Prototype
- Singleton
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
- Command
- Iterator
- Observer
- State
- Strategy
- Visitor
Each pattern implementation will include:
- A simple clean compact Java implementation
- Example test usage usually at the bottom of the respective file
This repository is intended to be both:
- A personal learning archive
- A resource for anybody who wants simple, clear, and practical examples of some of the many software design patterns that you may come across.