In Java: I need to write a pubslisher/subscriber (observer) based program. I wan
ID: 3580378 • Letter: I
Question
In Java:
I need to write a pubslisher/subscriber (observer) based program. I wanted to use the following skeleton. The code should modified how it works best to include an observer list with simple information (email, phone number) and should set event to active whenever program is run. Should have a system print of something generic like "notifying observers that event is active". The events are simple like an active shooter event or some other disaster.
public class ObserverPatternMain {
public static void main(String[] args) {
Subsystem airPortSecurity=new Subsystem("airPortSecurity");
Subsystem airLine=new Subsystem("airline");
Subsystem localPolice=new Subsystem("localPolice");
Alarm alarm=new Alarm("Alarm","Not Active");
alarm.registerObserver(airPortSecurity);
alarm.registerObserver(airLine);
alarm.registerobserver(localPolice);
alarm.setAvailability("Active");
}
}
public interface Observer {
public void update(String availability);
}
public class Subsytem implements Observer{
String subsystemname;
public Person(String subsystemname) {
this.subsystemname = subsystemname;
}
public String getsubsystemname() {
return subsystemname;
}
public void setPersonName(String subsystemname) {
this.subsystemname = subsystemname;
}
public void update(String availabiliy) {
System.out.println("Hello "+subsystemname+", Alarm is now "+availabiliy+");
}
}
import java.util.ArrayList;
public class Product implements Subject{
private ArrayList<Observer> observers = new ArrayList<Observer>();
private String productName;
private String productType;
String availability;
public Product(String productName, String productType,String availability) {
super();
this.subsystemname = subsystemname;
this.subsystemname = subSystemType;public interface Subject {
public void registerObserver(Observer observer);
public void removeObserver(Observer observer);
public void notifyObservers();
}
this.availability=availability;
}
public ArrayList<Observer> getObservers() {
return observers;
}
public void setObservers(ArrayList<Observer> observers) {
this.observers = observers;
}
public String getsubsystemname() {
return subsystemname;
}
public void setsubsystemname(String productName) {
this.subsystemname = subsystemname;
}
public String getsubSystemType() {
return subSystemType;
}
public void setProductType(String productType) {
this.subSystemType = subSystemType;
}
public String getAvailability() {
return availability;
}
public void setAvailability(String availability) {
this.availability = availability;
notifyObservers();
}
public void notifyObservers() {
System.out.println("Notifying to all of the Subsystems when alarm is active");
for (Observer ob : observers) {
ob.update(this.availability );
}
}
public void registerObserver(Observer observer) {
observers.add(observer);
}
public void removeObserver(Observer observer) {
observers.remove(observer);
}
}
Explanation / Answer
Create a package com.java.observer. And in this package
1. create interface Observer.java which contains code :
package com.java.observer;
public interface Observer {
public void update(String availability);
}
2. create a class Subsystem.java that implements this interface and contains code :
package com.java.observer;
public class Subsystem implements Observer {
String subsystemname;
String phoneNumber;
String emailId;
public Subsystem(String subsystemname , String emailId , String phoneNumber) {
this.subsystemname = subsystemname;
this.emailId = emailId;
this.phoneNumber = phoneNumber;
}
public String getsubsystemname() {
return subsystemname;
}
public void setsubsystemName(String subsystemname) {
this.subsystemname = subsystemname;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getEmailId() {
return emailId;
}
public void setEmailId(String emailId) {
this.emailId = emailId;
}
public void update(String available) {
System.out.println("Hello " + subsystemname + ", Alarm is now "
+ available);
}
}
3. Also create one more interface with name Subject which contains code :
package com.java.observer;
public interface Subject {
public void registerObserver(Observer observer);
public void removeObserver(Observer observer);
public void notifyObservers();
}
4. Create a class Product which implements this interface and contains code :
package com.java.observer;
import java.util.ArrayList;
public class Product implements Subject {
private ArrayList<Observer> observers = new ArrayList<Observer>();
private String productName;
private String productType;
String availability;
public Product(String productName, String productType, String availability) {
super();
this.productName = productName;
this.productType = productType;
this.availability = availability;
}
public ArrayList<Observer> getObservers() {
return observers;
}
public void setObservers(ArrayList<Observer> observers) {
this.observers = observers;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getProductType() {
return productType;
}
public String getAvailability() {
return availability;
}
public void setAvailability(String availability) {
this.availability = availability;
notifyObservers();
}
public void notifyObservers() {
System.out.println("Notifying to all of the Subsystems when alarm is active");
for (Observer ob : observers) {
ob.update(this.availability);
}
}
public void registerObserver(Observer observer) {
observers.add(observer);
}
public void removeObserver(Observer observer) {
observers.remove(observer);
}
}
5. Finally create a class ObserverPatternMain.java which contains the main function and shoots the event:
package com.java.observer;
public class ObserverPatternMain {
public static void main(String[] args) {
Subsystem airPortSecurity= new Subsystem("airPortSecurity","saeron@gmai.com" , "98764583");
Subsystem airLine= new Subsystem("airline","saeron@gmai.com" , "98764583");
Subsystem localPolice=new Subsystem("localPolice","saeron@gmai.com" , "98764583");
Product alarm = new Product ("Alarm","alarm","Not Active");
alarm.registerObserver(airPortSecurity);
alarm.registerObserver(airLine);
alarm.registerObserver(localPolice);
alarm.setAvailability("Active");
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.