package observerDM;
import java.util.Observable;
public class ConcreteSubject extends Observable {
public ConcreteSubject(String _name , float _price) {
this.name = _name;
this.price = _price;
System.out.println("ConcreteSubject created:" + _name + "at" + _price);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
setChanged();
notifyObservers(name);
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
setChanged();
notifyObservers(price);
}
private String name ;
private float price ;
}
package observerDM;
import java.util.Observable;
import java.util.Observer;
public class NameObserver implements Observer {
public NameObserver() {
this.name = null ;
System.out.println("NameObserver has created:Name is :" + this.name);
}
public void update(Observable o, Object arg) {
if(arg instanceof String) {
name = (String)arg;
System.out.println("NameObserver has changed:Name is :" + name);
}else {
System.out.println("NameObserver :some other change to subject");
}
}
private String name ;
}
package observerDM;
import java.util.Observable;
import java.util.Observer;
public class PriceObserver implements Observer {
public PriceObserver() {
this.price = 0 ;
System.out.println("PriceObserver has created : Price is :" + price);
}
public void update(Observable o, Object arg) {
if(arg instanceof Float) {
price = ((Float)arg).floatValue();
System.out.println("PriceObserver has changed:Price is :" + price);
}else {
System.out.println("PriceObserver :some other change to subject");
}
}
private float price ;
}
package observerDM;
public class TestObservers {
public static void main(String[] args){
ConcreteSubject sub = new ConcreteSubject("Com pops",(float)1.30);
NameObserver name = new NameObserver();
PriceObserver price = new PriceObserver();
sub.addObserver(name);
sub.addObserver(price);
sub.setName("Frosted Flakes");
sub.setPrice((float)1.40);
sub.setPrice((float)2.03);
sub.setName("helloWorld");
}
}