This is my realisation of topic based Publish/Subscribe Software Design Pattern.
http://en.wikipedia.org/wiki/Publish/subscribe http://en.wikipedia.org/wiki/Observer_pattern The dispatcher is the main task of this pattern, which administrates a topic table. If any (Queue- Notifier- User Event- and TCP/IP based) client starts, it should register himself by the dispatcher, so the dispatcher adds them into the topic table. The next step the client should do - is to subscribe to topics. If the dispatcher receives a message from any client, it looks which clients want to receive this message and send it only to this clients. So you can rediuce some data traffic in your programm. If a client is no more interested in a topic, it can unsubscribe from this topic. If a client want to be removed from the table, it should unregister.
So you can dynamically start/stop clients and realize a software, which is plugin able.
Supporting TCP/IP protocoll gives you a chance to communicate between programm modules, different applications, and different computers over network. Therefore you can connect two or more dispatchers and select topics, which you want to send or receive. This feature gives you a big advantage - remote debugging.