Skip to content

Observer design Pattern

Amresh Verma edited this page Jan 21, 2019 · 1 revision

=================Observer design Pattern=======================================

package com.opencodez.util;

public interface Observer {

public void update(float interest);

}

=====================Subject=================================

package com.opencodez.util;

public interface Subject { public void registerObserver(Observer observer);

public void removeObserver(Observer observer);

public void notifyObservers();

}

========================Loan===================

package com.opencodez.util;

import java.util.ArrayList;

public class Loan implements Subject {

private ArrayList<Observer> observers = new ArrayList<Observer>();

private String type;

private float interest;

private String bank;

public Loan(String type, float interest, String bank) {

this.type = type; this.interest = interest; this.bank = bank;

}

public String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

public float getInterest() {

return interest;

}

public void setInterest(float interest) {

this.interest = interest;

}

public String getBank() {

return bank;

}

public void setBank(String bank) {

this.bank = bank;

}

@Override public void registerObserver(Observer observer) {

observers.add(observer);

}

@Override public void removeObserver(Observer observer) {

observers.remove(observer);

}

@Override public void notifyObservers() { System.out.println("Notifying Observers on change in Loan interest rate");

for (Observer ob : observers) {

ob.update(this.interest);

}

}

}

======================Newspaper==============================

package com.opencodez.util;

public class Newspaper implements Observer {

@Override public void update(float interest) {

System.out.println("Newspaper: Interest Rate updated, new Rate is: "+ interest);

}

}

=================Internet====================

package com.opencodez.util;

public class Internet implements Observer {

@Override public void update(float interest) {

System.out.println("Internet: Interest Rate updated, new Rate is: "+ interest);

}

}

================ObserverTest==============================

package com.opencodez.util;

public class ObserverTest {

public static void main(String[] args) { Newspaper printMedia = new Newspaper();

Internet onlineMedia = new Internet();

Loan personalLoan = new Loan("Personal Loan", 12.5f,"Standard Charterd");

personalLoan.registerObserver(printMedia);

personalLoan.registerObserver(onlineMedia);

personalLoan.setInterest(13.8f);

personalLoan.notifyObservers();

}

}