Gast reto.koenig Geschrieben February 6, 2014 at 17:01 Geschrieben February 6, 2014 at 17:01 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. Zitieren
borg Geschrieben February 6, 2014 at 17:06 Geschrieben February 6, 2014 at 17:06 Das sollten wir machen können ohne die API zu brechen, gucke ich mir morgen mal an. Sollte eigentlich kein großes Problem sein . Zitieren
Gast reto.koenig Geschrieben February 6, 2014 at 22:47 Geschrieben February 6, 2014 at 22:47 WOW Danke für die schnelle Antwort! Zitieren
Nemo Geschrieben February 6, 2014 at 23:43 Geschrieben February 6, 2014 at 23:43 Hi reto.koenig, ich verstehe nicht ganz was du meinst, es klingt aber spannend, könntest du mir das mal erklären? Danke, Nemo Zitieren
Gast reto.koenig Geschrieben February 8, 2014 at 17:20 Geschrieben February 8, 2014 at 17:20 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. Zitieren
photron Geschrieben February 10, 2014 at 11:59 Geschrieben February 10, 2014 at 11:59 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? Zitieren
Unexpected Geschrieben February 10, 2014 at 18:30 Geschrieben February 10, 2014 at 18:30 Ich finde die erweiterte Idee von dir photron auch sehr gut! Zitieren
photron Geschrieben February 14, 2014 at 16:27 Geschrieben February 14, 2014 at 16:27 Ich hab das jetzt mal eingebaut. Hier eine Vorabversion zum Testen.tinkerforge_java_bindings_2_0_14_device_listener.zip Zitieren
Gast reto.koenig Geschrieben February 15, 2014 at 19:14 Geschrieben February 15, 2014 at 19:14 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!!! Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.