Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

1. Write a java program that utilize the observer pattern to simulate the follow

ID: 3832472 • Letter: 1

Question

1. Write a java program that utilize the observer pattern to simulate the following scenario. Three subscribers received news from a publisher. There are three news messages that are sent to all the subscribers "First Message "Second Message and "Third message". When the subscriber receives the message, the program needs to display "Observer 1 received First Message.", etc. A good example of Observer Pattern in java can be found there: https: Mwww.tutorialspoint.fom/design pattern/observer pattern.htm

Explanation / Answer

Hi,

Please seebelow the classes and output.

Please comment for any queries/updates.

Thanks.

MySubject.java

import java.util.ArrayList;
import java.util.List;


public class MySubject {

   private List<MyObserver> observers = new ArrayList<MyObserver>();
   private String message;

   public String getMessage() {
   return message;
   }

   public void sendMessage(String message) {
   this.message = message;
   notifyAllObservers();
   }

   public void attach(MyObserver observer){
   observers.add(observer);      
   }

   public void notifyAllObservers(){
       //Calling update method of each Observer to update the new message
   for (MyObserver observer : observers) {
   observer.update();
   }
   }   
}

MyObserver.java

public abstract class MyObserver {
   protected MySubject subject;
   public abstract void update();
}

ObserverOne.java


public class ObserverOne extends MyObserver{

   public ObserverOne(MySubject subject){
   this.subject = subject;
   this.subject.attach(this);
   }

   @Override
   public void update() {
   System.out.println( "Observer 1 received " +subject.getMessage() );
   }
   }

ObserverTwo.java


public class ObserverTwo extends MyObserver{

   public ObserverTwo(MySubject subject){
   this.subject = subject;
   this.subject.attach(this);
   }

   @Override
   public void update() {
       System.out.println( "Observer 2 received " +subject.getMessage() );
   }
   }

ObserverThree.java


public class ObserverThree extends MyObserver{

   public ObserverThree(MySubject subject){
   this.subject = subject;
   this.subject.attach(this);
   }

   @Override
   public void update() {
       System.out.println( "Observer 3 received " +subject.getMessage() );
   }
   }

MyObsereverDemo.java


public class MyObsereverDemo {

   //Main method to send message
   public static void main(String[] args) {
       MySubject subject = new MySubject();

   new ObserverOne(subject);
   new ObserverTwo(subject);
   new ObserverThree(subject);

   System.out.println("Sending First Message..");  
   subject.sendMessage("First Message");
   System.out.println("Sending Second Message..");  
   subject.sendMessage("Second Message");
   System.out.println("Sending Third Message..");  
   subject.sendMessage("Third Message");

   }

}

Sample output:

Sending First Message..
Observer 1 received First Message
Observer 2 received First Message
Observer 3 received First Message
Sending Second Message..
Observer 1 received Second Message
Observer 2 received Second Message
Observer 3 received Second Message
Sending Third Message..
Observer 1 received Third Message
Observer 2 received Third Message
Observer 3 received Third Message

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Chat Now And Get Quote