Design Patterns Every Developer Should Know | Factory, Observer, Strategy | Java