Hallo zusammen,
Folgende Anfängerfrage zum Entwurfsmuster (Ist lange her, dass ich das letzte Mal objektorientiert unterwegs war...):
In meiner main() erzeuge ich eine Instanz eines MQTT-Clients:
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
die "Callback"-Funktionen sind ebenfalls definiert, z.B.:
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
Soweit, so gut. Nun möchte ich mir in der main() eine Instanz meiner Klasse "Player" erzeugen. Diese hat u.a. die Funktion "load_content(self, number)", mit der verschiedene Inhalte umgeschaltet werden können.
Beides für sich funktioniert einwandfrei, welche Entwurdsmuster bieten sich nun an, auf MQTT-Input hin den Player umzuschalten?
Mir fällt sowas ein wie:
- Ich erstelle eine eigene Klasse MQTTClient, die dann das "client = mqtt.Client()" als Klassenvariable bekommt (also statt das in main() zu machen)
- MQTTClient erhält eine Variable listener + eine SetterFunktion.
Dann geht also in der main() sowas wie
1 |
|
2 |
|
3 |
|
4 |
|
und die Callbackfunktion kann dann entsprechend sowas wie
1 |
|
2 |
|
3 |
|
Klasse "Player" muss dieses "Interface" natürlich implementieren. Alternativ, aber aus Sicht des MQTT-Clients gesehen etwas weniger "universell" ginge evtl. auch direkt
1 |
|
2 |
|
3 |
|
Ist das so sinnvoll, oder welche anderen Möglichkeiten habe ich? Ist dieses "Listener-Pattern" generell üblich?