import java.util.HashSet;
public class ObserverPattern {
public static void main(String[] args) {
Product p = new Product("《java编程思想》",100.00);
Observer o1 = new WebObserver();
Observer o2 = new MailObserver();
p.addObserver(o1);
p.addObserver(o2);
System.out.println("第一次价格变动");
p.setPrice(80);
// o1.unreg(p);
System.out.println("第二次价格变动");
p.setPrice(150);
}
}
interface Observer{
public void update(Product p);
public void unreg(Product p);
}
class WebObserver implements Observer{
public void update(Product p) {
System.out.println("更新页面价格:"+p.getName()+":"+p.getPrice());
}
public void unreg(Product p) {
p.getObservers().remove(this);
}
}
class MailObserver implements Observer{
public void update(Product p) {
System.out.println("发送价格变化信息:"+p.getName()+":"+p.getPrice());
}
public void unreg(Product p) {
p.getObservers().remove(this);
}
}
class Product{
private double price;
private String name;
private HashSet<Observer> observers;
public Product (String name ,double price){
this.price=price;
this.name=name;
observers = new HashSet<Observer>();
}
public void addObserver(Observer ob) {
observers.add(ob);
}
public void notifyObserver() {
for (Observer ob : observers) {
ob.update(this);
}
}
public double getPrice(){
return price;
}
public void setPrice(double price) {
this.price=price;
notifyObserver();//价格变化时通知观察者
}
public String getName() {
return name;
}
public void setName(String name) {
this.name=name;
}
public HashSet<Observer> getObservers() {
return observers;
}
public void setObservers(HashSet<Observer> observers) {
this.observers=observers;
}
}
分享到:
相关推荐
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现发布-订阅...
观察者模式,也被称为发布-订阅(Publish-Subscribe)模式,是软件设计中的一种行为模式。在iOS开发中,它是一种让多个对象监听或订阅某一个主题对象的状态变化,并在状态变化时自动收到通知的方式。这种模式使得...
程序设计模式观察者模式
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动或者发布...
观察者模式是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。在这个背景下,我们以Android中的TextView为例,来深入...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动编程或者...
当一个对象的改变同时会影响其他对象的行为的时候,可以使用此设计模式。 l 主题对象 :一个需要被关注的主题对象,这个主题对象改变会影响其他对象的行为 l 订阅对象:当主题对象发生改变,订阅对象需要相应处理...
观察者模式和设计模式是软件工程中至关重要的概念,它们为构建可维护、可扩展的系统提供了基础。本文将深入探讨这两个设计模式以及与之相关的Java实现。 首先,观察者模式(Observer Pattern)是一种行为设计模式,...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动编程或者...
观察者模式(Observer)是软件设计模式中的一种行为模式,其主要目的是在对象之间建立一种松散耦合的关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式广泛应用于事件驱动...
总结来说,观察者模式是一种重要的设计模式,它允许对象在状态改变时自动通知其他对象,从而降低了系统各部分之间的耦合度,提高了代码的灵活性和可扩展性。在实际项目中,正确使用观察者模式可以有效地管理组件间的...
观察者模式(有时又被称为发布(publish )-订阅(Subscribe)模式、模型-视图(View)模式、源-收听者(Listener)模式或从属者模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件...
观察者模式是软件设计模式中的一种对象行为型模式,它定义了一种一对多的依赖关系,使得每当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常被称为发布-订阅模式、模型-视图模式...
观察者模式(Observer Pattern)是其中一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。在银行系统的场景中,这种模式的应用尤其...
观察者模式(Observer)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式在C++中广泛应用,特别是在需要...
结合微信公众号讲解观察者模式,生动形象,关键是上手快啊
观察者模式是软件设计模式中的一种行为模式,它允许一个对象,称为"主题",维护一个依赖于它的对象列表,这些对象被称为"观察者"。当主题的状态发生改变时,它会通知所有观察者,使它们能够自动更新自己。这种模式在...
观察者模式是软件设计模式中的一种行为模式,它在对象之间定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式广泛应用于事件驱动编程、发布/订阅系统...
《设计模式——观察者》 在软件工程中,设计模式是一种在特定情境下解决常见问题的经验总结,它们是经过反复验证的最佳实践。观察者模式(Observer Pattern)是行为设计模式的一种,它定义了对象之间的一对多依赖...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...