私は、2つの異なるoberserversで究明したい2つの属性を持つproductオブジェクトを得ました。しかし、1つの属性だけを変更すると、他の属性オブザーバから変更が加えられたという通知も受け取ります。本当に変更されたときにのみ通知を受けるようにするにはどうすればよいですか?2つのOberserversでオブジェクトの属性を比較する
import java.util.Observable;
public class Product extends Observable {
private String name;
private double price;
public void setName(String n){
name = n;
this.setChanged();
this.notifyObservers();
}
public void setPrice(double p){
price = p;
this.setChanged();
this.notifyObservers();
}
public String getName() {
return name;
}
public double getPrice() {
return price;
}
}
public class ObserverDemo {
public static void main(String [] args) throws Exception {
Product p1 = new Product();
p1.addObserver((obj, arg) -> System.out.println("Name was changed to: " + ((Product) obj).getName()+"\n"));
p1.addObserver((ob, arg) -> System.out.println("Price was changed to: " + ((Product) ob).getPrice()+"\n"));
p1.setPrice(1.95);
p1.setName("Milk");
p1.setName("Banana");
p1.setPrice(0.95);
}
}