Hallo Ich habe ziemlich komplexe Anwendung erfordert Klassifizieren von „Activity“, „Service“ und „FragmentActivity“ in Android (aber diese Frage ist nach wie vor gültig in reinen Java als auch)Wie teile ich Code zwischen verschiedenen Klassen?
die 3 Jede Klassen wird erweitert mit einer Reihe von Dienstprogrammen in "Meine Ebene" z eine spezifische Methode, um einen Toast anzuzeigen oder eine bestimmte Methode, um eine Konfiguration zu handhaben oder Dateien auf der Festplatte usw. zu lesen.
Jetzt habe ich eine gemeinsame Schnittstelle (MyUtilities) für alle 3 Arten von Klassen, z.
public class MyActivity extends Activity implements MyUtilities
public class MyFragmentActivity extends FragmentActivity implements MyUtilities
public class MyService extends Service implements MyUtilities
public class MyActivity1 extends MyActivity
public class MyFragmentActivity1 extends MyFragmentActivity
public class MyService1 extends MyService
aber das macht mich zu kopieren beenden und gemeinsame Methoden für alle drei Klassen einfügen, da ich nicht Felder und Methoden in der Schnittstelle definieren. Gibt es einen besseren Weg, das zu tun? Kopiercode ist auf lange Sicht extrem fehleranfällig.
Ich schaute auf abstrakte Klassen, aber nicht sicher, wie man sie in diesem Fall verwendet. Im Idealfall, was ich brauche es eine „doppelte erweitern“ wie
public class MyActivity extends Activity, MyUtilities
was natürlich nicht erlaubt, aber das würde mein Problem lösen.
Ideen bitte?
Danke!
PS: Ich bin bereits statische Methoden auf gemeinsame Klassen, wo immer möglich
Als here'a angefordert, ein einfaches Beispiel. Jede der drei Objekte müssen in der Lage, ein Konfigurationsfeld zu unterstützen und jede enthält die folgenden
private Configuration config
public Configuration getConfiguration(){return config;}
public void setConfiguration(Configuration cfg){this.config=cfg;}
Möchten Sie eine Schnittstelle hilft bei der erfordert, dass die Methoden gibt es, aber ich muss noch kopieren und Einfügen von Code, die ich don nicht wirklich.
Bitte teilen Sie mehr Code, ist die Antwort nur Logik in einer getrennten Klasse Methode extrahieren. Für eine bessere Hilfe teilen Sie Ihren Code jedoch. – Ele
Danke, ich fügte ein einfaches Beispiel in den Haupttext – Lele