Figure 3: The Publisher class

class Publisher
{
public:
   static Publisher* getInstance();

   // Functions for the Subject
   void createPublication(
      const std::string& fPubName, 
      Subject* fpPubOwner);
   void discontinuePublication(
      const std::string& fPubName, 
      Subject* fpPubOwner);
   void publish(
      const std::string& fPubName, 
          Subject *fpPubOwner);
   
   // Functions for the Observer
   // (subscriber)
   void subscribe(
      const std::string& fPubName, 
      Observer* fpSubscriber);
   void unsubscribe(
      const std::string& fPubName, 
      Observer* fpSubscriber);
   // ...
};