Design Patterns with Java programming language