Beispiel #1
0
        static void Main(string[] args)
        {
            //Get User input
            User user = GetInput();

            //Data Transform, this could enhance with dependency injection or strategy pattern to change the
            // transformation method during run time.
            string userData = Newtonsoft.Json.JsonConvert.SerializeObject(user);

            //Register the publisher to the message broker
            MessageBroker messageBroker = new MessageBroker();
            Publisher     publisher     = new Publisher(messageBroker);

            //Subscibe to the message broker
            ConcreteSubscriber  subscriber1         = new ConcreteSubscriber("Subscriber 1", messageBroker);
            FormattedSubscriber formattedSubscriber = new FormattedSubscriber(messageBroker);

            // Publish to all subscriber
            publisher.PublishData(userData);

            //Display Data
            Console.WriteLine(subscriber1.GetDisplayData());
            Console.WriteLine(formattedSubscriber.GetDisplayData());

            Console.ReadLine();
        }
Beispiel #2
0
        public static void Run()
        {
            ConcretePublisher publisher   = new ConcretePublisher();
            ISubscriber       subscriber1 = new ConcreteSubscriber();
            ISubscriber       subscriber2 = new ConcreteSubscriber();

            publisher.Subscribe(subscriber1);
            publisher.Subscribe(subscriber2);

            publisher.MainBusinessLogic();
        }
Beispiel #3
0
        public void TestConcreteSubscriber()
        {
            string name = "concrete subscriber";
            string data = "test data";
            var    messageBrokerMock = new Mock <MessageBroker>();

            var subscriber = new ConcreteSubscriber(name, messageBrokerMock.Object);

            subscriber.EnqueueData(data);

            Assert.AreEqual(name + "'s Data : \r\n" + data + "\r\n", subscriber.GetDisplayData());
        }