- Abstract Factory
- Builder
- Factory Method
- Prototype
- Singleton
- Chain of Responsibility
- Command
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template Method
- Visitor
Design patterns are reusable solutions to common problems that occur in software design. They are not specific to any programming language, and can be used in many different languages. Design patterns can be used to solve problems such as:
- How to create objects
- How to structure classes
- How to define the behavior of objects
- How to define the communication between objects
- How to organize the responsibilities of objects
- How to organize the responsibilities of classes