Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- interface Subject {
- void register(Observer observer);
- void unregister(Observer observer);
- void notifyObservers();
- }
- interface Observer {
- void update(String notification);
- }
- class BarristerSumonFacebookPage implements Subject {
- // Barrister Sumon's page has to know his followers
- private ArrayList<Observer> observers = new ArrayList<Observer>();
- // His status
- private String status;
- // The way followers can 'Like' or register to his page
- @Override
- public void register(Observer observer) {
- observers.add(observer);
- }
- // The way followers can 'Unlike' or unsubscribe from his page
- @Override
- public void unregister(Observer observer) {
- observers.remove(observer);
- }
- // His page's way of notifying all this followers
- @Override
- public void notifyObservers() {
- for (Observer observer : observers) {
- observer.update("Barrister Sumon has new notification!");
- }
- }
- // Barrister Sumon use's this method to update his status.
- // And when he does that, it should notify his followers
- public void updatePage(String status) {
- this.status = status;
- notifyObservers();
- }
- }
- class CrazyFan implements Observer {
- // Fan's name
- private String name;
- // Constructor to set Fan's name
- CrazyFan(String name) {
- this.name = name;
- }
- // This is the method, Barrister Sumon's FB page uses to notify the fan
- public void update(String notification) {
- // Just to prove that individual fan's get separate notifications
- System.out.print("This is " + this.name + "'s page! ");
- System.out.println(notification);
- }
- }
- class ObserverPatternTestDrive {
- public static void main(String[] args) {
- // Barrister Sumon creates his own page
- BarristerSumonFacebookPage fb_page = new BarristerSumonFacebookPage();
- // Let's create two crazy fans: Mofiz and Moznu
- CrazyFan crazyFan1 = new CrazyFan("Mofiz");
- CrazyFan crazyFan2 = new CrazyFan("Moznu");
- // Fans 'Like' his page, subscribes to it
- fb_page.register(crazyFan1);
- fb_page.register(crazyFan2);
- // Barrister Sumon updates his page with new video
- fb_page.updatePage("I'm now live!");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement