Interfaces and Design Patterns