Java Design Patterns and APIs for Android