Observer design Pattern - amresh087/newronaRepos GitHub Wiki
=================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();
}
}