Strutture di alto livello come Android tendono a seguire una serie di modelli di progettazione stessi. È quasi come se steste imparando il/i modello/i sul lavoro. Un ottimo esempio è il modello editore/sottoscrittore delle interfacce OnXXXListener. Se segui la guida che il framework indica, ti viene in realtà solo (secondo me, ovviamente). Ad esempio, ho creato una finestra di selezione dei colori. Voglio che i consumatori della vista (Attività) siano in grado di ricevere notifiche come "colore selezionato". Ho semplicemente visto come le classi SDK farebbero questo, e seguire il loro esempio (creato un'interfaccia OnColorSelectedListener con un metodo onColorSelected, esporre questa funzionalità attraverso setOnColorSelectedListener nel mio selettore di colori View, ecc.).
Provenendo da uno sfondo .Net ad Android/Java, vedo davvero le differenze. .Net ha un sacco di diversi modelli di design in tutto il quale forniscono un'ottima guida per le vostre classi personalizzate. La buona notizia è che gli ingegneri dietro a .Net BCL e Android SDK hanno fatto un ottimo lavoro nell'implementare alcuni modelli di progettazione molto comuni, quindi ci sono ottimi esempi da seguire.