3 types: creational, structural, behavioral

Creational

object creation, keeping flexibility and reusability…

Structural

assemble classes into bigger structure while keeping them flexible…

Behavioral

concerns algorithms and assigning responsibility, keeping the implementation not too coupled with the structure…

Mediator

decoupling between objects by preventing direct method calls and forcing doing so via a mediator object