Software Design Patterns and its real world application