Los marcos de alto nivel como Android tienden a seguir un conjunto de patrones de diseño. Es casi como si estuvieras aprendiendo los patrones en el trabajo. Un gran ejemplo es el modelo de editor/suscriptor de las interfaces OnXXXListener. Si sigues el ejemplo que establece el marco, realmente solo llega a ti (en mi opinión, por supuesto). Por ejemplo, creé una vista del selector de color. Quiero que los consumidores de la Vista (Actividades) puedan recibir notificaciones como "color seleccionado". Simplemente observé cómo las clases de SDK harían esto y seguí su ejemplo (creé una interfaz OnColorSelectedListener con un método onColorSelected, expongo esta funcionalidad a través de setOnColorSelectedListener en mi selector de color, etc.).
Viniendo de un fondo .Net a Android/Java, realmente veo las diferencias. .Net tiene muchos patrones de diseño diferentes a lo largo de los cuales proporciona una muy buena guía para sus clases personalizadas. La buena noticia es que los ingenieros detrás de .Net BCL y Android SDK hicieron un gran trabajo al implementar algunos patrones de diseño muy comunes, por lo que hay excelentes ejemplos a seguir.