# Design Patterns Revisited

Design Patterns are standard solutions to common design problems in object-oriented applications. They act as guidelines that can be used to solve recurring design problems in your code. If you have been in the software industry for a while, it is possible that you have already implemented some of these  patterns without realizing it.

Note that design patterns are not ready-to-use code solutions. They describe or suggest how the solution should look like.

## Benefits of Design Patterns

- Teach how to solve all sorts of problems using principles of Object-Oriented Design

- Adhere to SOLID principles

- Achieve highly cohesive modules with minimal coupling (Extensibility and reusability).

- Communication tools between designers and developers

## Types of Design Patterns

### Creational Design Patterns

- Factory/ Abstract Factory

- Builder

- Prototype

- Singleton

### Structural Design Patterns

- Adapter

- Bridge

- Composite

- Decorator

- Facade

- Flyweight

- Proxy

### Behavioral Design Patterns

- [Chain of Responsibility](https://ariesgun.xyz/chain-of-responsibility-design-pattern)

- [Command](https://ariesgun.xyz/command-design-pattern)

- Interpreter

- Iterator

- Mediator

- Memento

- Observer

- State

- [Strategy](https://ariesgun.xyz/strategy-design-pattern)

- Template Method

- Visitor







