Jump to content

[Java] Sämtliche Listener von einem Interface 'DeviceListener' ableiten


Recommended Posts

Geschrieben

Wäre es denkbar ein SuperInterface DeviceListener zu erstellen und dann alle Listener der verschiedenen Device (z.B. StateChangedListener ...) von dem ableiten zu lassen?

 

So wäre es möglich, eine Liste von DeviceListener's zu erstellen.

 

Momentan ist das nicht möglich.

Geschrieben

Ein Erklärungsversuch, warum ein SuperInterface 'DeviceListener' so immens praktisch wäre:

 

1. Logische Erklärung:

Bricklets und Bricks sind allesamt ein 'Device'.

Dann ist es logisch, dass alle deren Listener  'DeviceListener' sind.

 

2. Praktische Erklärung:

In einem Progrämmchen möchte man vielleicht mehrere DeviceListener (also mehrere Listener von einem Device) verwalten.

 

So kann man zu gegebener Zeit diese Listener z.B. von einem Device wieder abkoppeln (removeListener) oder sie später wieder anhängen (addListener), ohne dass diese immer wieder neu kreiert werden müssen...

 

...Dazu ist aber ein Array / eine Collection nötig... mit der die einzelnen Listener verwaltet werden.

Mit dem DeviceListener als SuperInterface ist es möglich, eine Collection<DeviceListener> zu erstellen, welche garantiert nur DeviceListener beherbergt.

 

Bisher ist aber nur eine Collection<Object> möglich, welche dann 'vielleicht' einen Listener zu einem Device beherbergt... oder vielleicht aber auch ein Fahrrad oder einen Kalender ....

 

 

Noch ein praktisches Beispiel:

Es könnte vom Programmierer nun eine (DeviceListener-)Factory geschrieben werden, welche die einzelnen DeviceListener schlau verwaltet. Diese kann z.B. garantieren, dass der jeweils richtige DeviceListener z.B. Schalte das Licht im Badezimmer nur an das dafür vorgesehene Device gegeben wird z.B. DualButton|MotionDetector im Badezimmer nicht aber an den DualButton|MotionDetector im Keller.

Bisher ist so eine DeviceListener Factory nicht out-of-the-box möglich.

Geschrieben

reto.koenig danke für die detaillierte Darstellung des Nutzens eines DeviceListeners.

 

Es ist kein Problem eine DeviceListener Interface als Basis aller Device Listener einzubauen. Ich frage mich an der Stelle, ob man nicht einen Schritt weiter geht und einen TinkerforgeListener neben eines DeviceListeners einbaut, der dann als Basis für alle Listener dient, also auch der der IPConnected: Connected, Disconnected und Enumerate.

 

Also so:

 

interface TinkerforgeListener {} // Basis aller Listener

interface EnumerateListener extends TinkerforgeListener {}

interface DeviceListener extends TinkerforgeListener {} // Basis aller Device Listener

interface StateChangedListener extends DeviceListener {}

 

Was haltet ihr davon?

Geschrieben

Herzlichen Dank photron für die erweiterte Idee und deren Umsetzung.

Ich habe die neuen Bindings noch nicht testen können, werde ich aber sofort nachholen.

 

Klasse!!!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...