Explains expected structure of the JSon messages. Changes default message values to None I will probably have to provide a imple way to create JSon elements.
2.8 KiB
Python Observer pattern using Json
This module contains a Python implementation of the Observer pattern, using json as a format to share information.
See Wikipedia for more information.
Short description of the implementation
Observer :
An observer is uniquey defined by its name. This allows Observable to only notify a given Observer if needed. Observers can subscribe to an Observable and will then receive all future notifications from it. The notifications are sent in json format.
Observable :
An Observable is an entity holding information of interest for other entities. Observers subscribe or unsubscribe to an Observable to get notified any time message is updated.
JSon Structure:
As already explained, the messages sent from the observable to the observers are formatted in JSon. This allows a simple yet efficient control of the data sent and received while staying in line with the standards.
Each transmitted package should be divided into 4 sections:
- name : The name of the Observer to send the data to. As each Observer is uniquely defined by its name, filling this section means the data will be sent to at most one Observer.
- group : The group of Observers to send the data to. Each Observer may belong to a group. All Observers in the group will then be notified.
- type : the type of message contained in data. This section is not processed by the Observable and is sent as is. It may be blank, or contain anything.
- data : The actual data to be transmitted to the Observers
Here is are several examples of valid JSon message :
Data will be sent to Bob only. No particular message type
{ "name": 'Bob', "group": '', "type": '', "data": 42 }
Data will be sent to all Observers in the GUI group. We may assess that this is an update :).
{ "name": '', "group": 'GUI', "type": 'Update', "data": 'coffee' }
No group, neither name specified. All subscribers will be notified. the message is an array of value object.
{ "name": '', "group": '', "type": '', "data": ["baz", null, 1.0, 2] }
According to the JSon specifications, A value can be a string in double quotes, or a number, or true or false or null, or an object or an array.
Description of the package
The Observer pattern does not need any external module to work. Any simple Python installation (>= 2.6) should be enough. To use it, simply copy/paste the module file into your code base and load it in yuor code (import Observer) You are then ready to go !
This package contains several other ressources :
- this README, only used to describe the package and give general information
- testObserver.py, the unit tests of the Observer/Obervable classes.
- exObserver.py, a simple example to show how the Observer pattern can be used.