What is a Design Pattern?

Design patterns are repeatable template solutions for frequently occurring problems in software development.

Types of Design Patterns

a. Singleton
b. Observer / Pub Sub
c. Proxy
d. Circuit Breaker
e. Builder
f. Prototype
g. Iterator
h. Object Pool / Resource Pool

SOLID Principles

a. Single Responsibility Principle
b. Open Closed Principle
c. Liskov Substitution Principle
d. Interface Segregation Principle
e. Dependency Inversion Principle