Jump to content

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


Guest reto.koenig
 Share

Recommended Posts

Guest reto.koenig

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.

Link to comment
Share on other sites

Guest reto.koenig

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.

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

Guest reto.koenig

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!!!

Link to comment
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...