https://billyokeyo.dev/posts/design-patterns/
Introduction to Design Patterns - Billy Okeyo