Generische Interfaces mehrfach einbinden

jCoder1984

Aktives Mitglied
Hallo zusammen

ich habe eine Frage zu generischen Interfaces. Ich möchte Generische Listen als Interface erstellen. Beispiel : Spielerliste, Mannschaftsliste.

Die Listen sollen Opertation zum hinzufügen und entfernen von entsprechenden Objekten (Spieler oder Mannschaft) bereitstellen.

Java:
public interface IGenericList<T> {

    /**
     * @return
     */
    public List<T> getElements();

    /**
     * @return
     */
    public T addElementToList(T element);

    /**
     *
     */
    public void removeElementFromList(T element);

}

Allerdings möchte ich in einer Klasse das IGenericList Interface mehrfach anwenden :

Java:
public class Competition implements ICompetition, IGenericList<ITeam>, IGenericList<IMember>

Das geht natürlich nicht. Allerdings nun meine Frage wie macht man es besser. Der Grund warum ich gerenische interfaces verwenden will : Solche Listen verwende ich an zeimlich vielen Stellen im Code und möchte natürlich Code Doublizierung vermeinden.

Vielen Dank für eure Anregungen
 

truesoul

Top Contributor
Hallo.

Also gibt es sicherlich auch eine Liste von Wettbewerben oder?
Im Prinzip IGenericList<ICompetition> irgendwo im Code.

Ich hätte ja gedacht, dass ein Team eine Liste von IGenericList<IMember> hat.
Und Competition eine Liste von IGenericList<ITeam> hat.

Was hast du denn mit der Klasse Competition vor?

Eigentlich brauchst du nur eine Implementierung die die die Wettbewerbe+Team+Member bereitstellt.
Ein Service Team+Member und ein Service Member.

Arbeitest du mit einer Datenbank?

Also Beispiel:

Java:
// ITeamService kann natürlich auch sowas sein wie IService<ITeam>
class TeamService implements ITeamService {
    // dependency injection oder new TeamAccess()
    private ITeamAccess teamAccess;

    public IGenericList<ITeam> getAll(){
      
        IGenericList<ITeam> all = teamAccess.findAll();
        return all;
    }
  
    public ITeam getById(long id){
      
        ITeam team = teamAccess.find(id);
        return team;
    }
  
    public boolean addTeam(ITeam team){
        // Team hinzufügen
    }

}
// ITeamAccesskann natürlich auch sowas sein wie IAccess<ITeam>
class TeamAccess implements ITeamAccess {
  
    public IGenericList<ITeam> findAll() {
        // holt die Daten aus der Datei, Datenbank oder anderem und gibt diese Zurück
    }
  
    public ITeam find(long id){
        // holt das Team anhand einer ID und gibt es zurück.
    }
}

Somit musst du eigentlich nicht mehrfach die Listen verwalten. Du initialisiert das Service was du brauchst und verwendest dies.

Grüße
 

mrBrown

Super-Moderator
Mitarbeiter
Allerdings nun meine Frage wie macht man es besser.
In dem Fall vermutlich mit anderem Design ;)

Das ein Wettbewerb eine Liste von Spielern und eine Liste von Mannschaften ist, klingt zumindest etwas komisch.
besser wäre vermutlich, wenn ein Wettbewerb eine Liste von Mannschaften (uU von Spielern) hat.


(Das sieht ja schrecklich aus mit dem 'I' davor >.< :D )
 

jCoder1984

Aktives Mitglied
Vielen Dank euch allen für die Antworten.

Ich bin etwas durcheinandergekommen. Ein Competition braucht natürlich keine Member. Aber ein SportsClub hat Member und Teams

Wenn ich das als Service (MemberService und TeamService) implementiere, so kann ich beide ja nicht als Interface vom SportsClub implentieren lassen.

Java:
public interface Service<T> {

    /**
     * @return a list with all elements <br>
     */
    public List<T> getAllElements();

    /**
     * @return the new element <br>
     */
    public Optional<T> addElement(T element);

    /**
     * remove an element from the list <br>
     */
    public void removeElement(T element);
}

Java:
public interface TeamService extends Service<ITeam>{

}

Java:
public interface MemberService extends Service<IMember> {

}
 

truesoul

Top Contributor
Wenn ich das als Service (MemberService und TeamService) implementiere, so kann ich beide ja nicht als Interface vom SportsClub implentieren lassen.

Na ja, SportClub hat mehrere Teams und Teams hat mehrere Member usw.
Ein Wettbewerb ist zu diesen drei natürlich anders zu sehen.
Aber trotzdem hat ein Wettbewerb mehrere Teams usw.

Du hast im Prinzip:

SportClubService, MemberService, TeamService und Competition.

Und ein Team weiß zu welchem Sport Club es gehört genauso wie Member weiß in welchen Team er spielt usw.

SportClubService beeinhaltet auch ein SportClubAccess und eigentlich erhälst du vom Access die vollständigen Daten. Sprich SportClub mit allen Teams. Pro Team alle Member usw.

Ein Sport Club weiß anhand der Teams wer seine Member sind, wenn wir davon ausgehen, dass wir über Spieler reden. Aber ein Sport Club kann auch ein MemberService beeinhalten, würde nichts dagegen sprechen.

Grüße
 
Zuletzt bearbeitet:

mrBrown

Super-Moderator
Mitarbeiter
Ich würde da gänzlich auf Service-Terminologie etc verzichten.

Ein Sportclub *hat* Mitglieder und Teams.

Wofür brauchst du an der Stelle dein Interface?
 

mrBrown

Super-Moderator
Mitarbeiter
Und warum würdest du darauf verzichten? Direkt vom Controller auf Die Access zugreifen?
Ich sagte *Terminologie*.
Und ja, noch würde ich darauf verzichten (aber auch auf Controller und Access). Erstmal muss doch überhaupt das grundsätzliche Klassen-Design stehen und verstanden sein.

(Btw sollte man dann dazu sagen, was man mit Service meint, je nach Kontext meint das unterschiedliche Dinge.
DDD-Services meint es hier vermutlich nicht?)
 

truesoul

Top Contributor
Nein. Die Services sollte eher die als Application Service dienen und die Access Implementation wäre so gesehen die Repositories.

Wobei noch nicht beantwortet wurde, ob eine Datenbank im Einsatz ist.

Warum würdest du auf Controller und Access verzichten? Was wäre deine Herangehensweise?

Klassen-Design stehen und verstanden sein.

Kann sein, dass ich ein wenig zu weit ausgeholt habe. Wenn das Klassen-Design noch nicht gut ausgedacht ist, bringt es nicht viel die Anwendungsschichten einzubauen.
 

mrBrown

Super-Moderator
Mitarbeiter
Kann sein, dass ich ein wenig zu weit ausgeholt habe. Wenn das Klassen-Design noch nicht gut ausgedacht ist, bringt es nicht viel die Anwendungsschichten einzubauen.
Eben deshalb würde ich da drauf verzichten, relevant ist erstmal, die Domäne als Klassenstruktur zu repsäsentieren.


Uns zusätzlich ist dann auch noch die Benennung verwirrend, besonders wenn man sie noch so gar nicht kennt, hier gibts ja bei 3 Leuten schon 3 verschiedene Vorstellungen davon...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Random Number - Generische Formel zwischen zwei INKLUSIVEN Werten Allgemeine Java-Themen 16
F Verständnisprobleme Aufgabenstellung Aktionsobjekte und generische Listen Allgemeine Java-Themen 1
J Generische Interface - Problem Allgemeine Java-Themen 3
M Methoden Generische Methode für ArrayList Allgemeine Java-Themen 7
perlenfischer1984 Reflection : Element in generische Liste hinzufügen Allgemeine Java-Themen 4
D generische Interface und konkrete Methode Allgemeine Java-Themen 3
T Interface mit generische Typen Allgemeine Java-Themen 5
A Methoden Generische Methode mit Arrays - Source Compatibility 1.7 benötigt, wieso? Allgemeine Java-Themen 3
M Interface Generische Klassen mit mehreren Typen überschreiben Allgemeine Java-Themen 0
H Interface Generische Schnittstelle (rekusiv) Allgemeine Java-Themen 2
C generische Authentifizierung Allgemeine Java-Themen 7
JCODA Generische Map Frage Allgemeine Java-Themen 10
H Generische Array Allgemeine Java-Themen 11
M Problem beim schreiben einer eigene generische Klasse Hashtable Allgemeine Java-Themen 11
M Generische Methoden mit Java und globale Variablen Allgemeine Java-Themen 9
M Problem beim schreiben einer eigene generische Klasse LinkedList Allgemeine Java-Themen 34
D generische Klasse für alle Maps (nicht Collections :-)) Allgemeine Java-Themen 11
D Methode für generische enummap/enum Allgemeine Java-Themen 10
B Generische Datentypen MergeSort Allgemeine Java-Themen 5
M Generische Klassen Allgemeine Java-Themen 3
M generische Listener Allgemeine Java-Themen 2
S Generische Typen: Frage dazu Allgemeine Java-Themen 11
H generische Klasse Realtion Allgemeine Java-Themen 2
T Ideenfindung: Generische Transportklasse? Allgemeine Java-Themen 3
C Generische Methode (Schablone) Allgemeine Java-Themen 8
G generische Klasse als Parameter einer generischen Klasse Allgemeine Java-Themen 5
leifg Rechenoperationen auf generische Datentypen Allgemeine Java-Themen 10
B Generische Typen instanzieren Allgemeine Java-Themen 11
R Generische Listener und Sender Allgemeine Java-Themen 12
M Generische Datentypen Allgemeine Java-Themen 14
S Generische Liste Allgemeine Java-Themen 30
F Viele generische Parameter sinnvoll? oder besser casten? Allgemeine Java-Themen 10
S Generische Methode Allgemeine Java-Themen 13
R Frage zu einfügen in generische lineare Liste Allgemeine Java-Themen 7
S Generische Methoden Allgemeine Java-Themen 7
D Statische, generische Methode will nicht. Allgemeine Java-Themen 2
R Lesen von Interfaces (Programm Vervollständigen) Allgemeine Java-Themen 10
S Interfaces Allgemeine Java-Themen 10
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
S Kann man Variablen oder Felder definieren deren Typ zwei Interfaces ist..? Allgemeine Java-Themen 9
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
S Kann ich eine Methode schreiben die alle Arten von funktionalen Interfaces akzeptiert..? Allgemeine Java-Themen 21
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
P Interfaces Allgemeine Java-Themen 1
K Wohin mit Interfaces? Allgemeine Java-Themen 2
J Interface Wofür Interfaces in Java verwenden? Allgemeine Java-Themen 3
F Namen des Interfaces ausgeben Allgemeine Java-Themen 1
P ClassCastException bei Verwendung eines Interfaces Allgemeine Java-Themen 7
F Sinn des Serializable Interfaces Allgemeine Java-Themen 8
G Interface Laden der Konfiguration über Interfaces sinnvoll? Allgemeine Java-Themen 28
X Generic muss zwei Klassen/Interfaces erfüllen Allgemeine Java-Themen 5
K Objekt einer konkreten Implementierung eines Interfaces durch übergebenen String Allgemeine Java-Themen 2
D Java Interfaces Allgemeine Java-Themen 3
sylo toString() Methode eines Interfaces überladen. Allgemeine Java-Themen 17
S statische Interfaces..? Allgemeine Java-Themen 6
M Frage zu Interfaces (Beispiel: Comparable) Allgemeine Java-Themen 13
I Interfaces und abstrakte Methoden Allgemeine Java-Themen 5
C Verständnis zur Strukturierung von Java-Projekten/Interfaces Allgemeine Java-Themen 2
M Methodenaufrufe sind über Interfaces langsamer. Allgemeine Java-Themen 43
J Verständnisfrage zu Casts auf Interfaces Allgemeine Java-Themen 5
J Statische Methoden in Interfaces? Allgemeine Java-Themen 10
J Immutable mit Interfaces möglich? Allgemeine Java-Themen 2
G verzweiflung pur mit java interfaces Allgemeine Java-Themen 5
M Bereits imlplementierte Interfaces nochmal bei "impleme Allgemeine Java-Themen 10
T Nochmal Frage zu Vererbung Interfaces etc. Allgemeine Java-Themen 10
F Implementierte Interfaces ermitteln Allgemeine Java-Themen 6
T JDBC: Unterschiede in Interfaces zwischen 2 Java-Versionen. Allgemeine Java-Themen 6
E Attribute in Interfaces möglich? Allgemeine Java-Themen 17
I Denkfehler bei Interfaces und Casts? Allgemeine Java-Themen 12
M 2 Java-Interfaces öffnen in Unix Allgemeine Java-Themen 4
B "Instantiieren" eines Objekts eines Interfaces Allgemeine Java-Themen 10
F Problem: mehrere Interfaces definieren equals() neu Allgemeine Java-Themen 24
F Probleme mit Interfaces Allgemeine Java-Themen 3
L Verschiedene Versionen eines Interfaces Allgemeine Java-Themen 12
S Methoden aus Interfaces mit unterschiedlichen Parametertypen Allgemeine Java-Themen 7
deetee Wie nennt man Interfaces wie Serializable? Allgemeine Java-Themen 8
B Elegantere Lösung bei der Implementierung eines Interfaces Allgemeine Java-Themen 2
N 2 Interfaces mit Methoden selber Signatur implementieren Allgemeine Java-Themen 5
D Implementierungen eines Interfaces finden Allgemeine Java-Themen 9
C jar File mehrfach aufrufen (als Windows Dienst) Allgemeine Java-Themen 5
N rekursion mehrfach eine Methode Öffnen Allgemeine Java-Themen 4
Kingamadeus2000 Alle mehrfach vorkommenden Buchstaben rekursiv aus einem String entfernen. Allgemeine Java-Themen 6
D BlueJ, Variablen die mehrfach vorkommen gleichzeitig umbenennen Allgemeine Java-Themen 3
P Programm darf nicht mehrfach startbar sein Allgemeine Java-Themen 16
J Allgemein gültige Klasse/Methode mehrfach verwenden Allgemeine Java-Themen 11
R Threads ReentrantLock mehrfach verwenden Allgemeine Java-Themen 3
M Werte aus DB in Liste speichern ohne mehrfach speicherung Allgemeine Java-Themen 18
M AudioClip in Spiel mehrfach in kurzer Zeit abspielen Allgemeine Java-Themen 3
L Datei sicher löschen/mehrfach überschreiben? Allgemeine Java-Themen 2
J Ein Objekt mehrfach serialisieren Allgemeine Java-Themen 2
S Frage zu mehrfach indizierten Hashmaps Allgemeine Java-Themen 4
E Timer - gleichen Task mehrfach planen Allgemeine Java-Themen 2
G Interface mehrfach implementieren Allgemeine Java-Themen 5
S mehrfach if-anweisung Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben