One of the unchanging facts of life is that change is the undying constant in every software lifecycle – one that you cannot run away from. The challenge is to adapt to this change with minimum latency and maximum flexibility.
The good news is that someone has probably already solved your design problems and their solutions have evolved into best practices; these agreed-upon best practices are referred to as “Design Patterns”.
The Adapter Design Pattern
The Singleton Design Pattern
Design Patterns are Language Agnostic
(Full Story: Design Patterns in Java | Nettuts+)