Subject.java
import java.util.ArrayList;
import java.util.List;
public class Subject {
private int state;
public List subscribers ;
public Subject(){
subscribers=new ArrayList();
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public void attach(Observer observer){
subscribers.add(observer);
}
public void sendNotification(){
for (Observer observer : subscribers) {
observer.execute(state);
}
}
}
Observer.java
public abstract class Observer {
public abstract void execute(int state);
}
CalculateSquareObserver.java
public class CalculateSquareObserver extends Observer {
@Override
public void execute(int state) {
// TODO Auto-generated method stub
System.out.println("Square is ::"+(state*state));
}
}
CalculateEvenOddObserver.java
public class CalculateEvenOddObserver extends Observer {
@Override
public void execute(int state) {
// TODO Auto-generated method stub
if(state%2==0)
System.out.println(state + " is even number");
else
System.out.println(state + " is odd number");
}
}
ObserverPatternDemo.java
import java.util.Scanner;
public class ObserverPatternDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
//Create Subject
Subject subject = new Subject();
//Create observers
Observer sqrObserver = new CalculateSquareObserver();
Observer evenOddObserver = new CalculateEvenOddObserver();
//attach observers
subject.attach(sqrObserver);
subject.attach(evenOddObserver);
System.out.println("Enter the number :" );
Scanner sc = new Scanner(System.in);
subject.setState(sc.nextInt());
subject.sendNotification();
}
}
Output
