https://sharelearn.net/learn/courses/udemy-java-design-patterns-tutorial/
Java Design Patterns and Architecture