程序实例
通过程序实例来说明观察者模式:
首先定义抽象的观察者:
//抽象观察者角色 public interface Watcher { public void update(String str); }
然后定义抽象的主题角色,即抽象的被观察者,在其中声明方法(添加、移除观察者,通知观察者):
//抽象主题角色,watched:被观察 public interface Watched { public void addWatcher(Watcher watcher); public void removeWatcher(Watcher watcher); public void notifyWatchers(String str); }
然后定义具体的观察者:
public class ConcreteWatcher implements Watcher { @Override public void update(String str) { System.out.println(str); } }
之后是具体的主题角色:
import java.util.ArrayList; import java.util.List; public class ConcreteWatched implements Watched { // 存放观察者 private List<Watcher> list = new ArrayList<Watcher>(); @Override public void addWatcher(Watcher watcher) { list.add(watcher); } @Override public void removeWatcher(Watcher watcher) { list.remove(watcher); } @Override public void notifyWatchers(String str) { // 自动调用实际上是主题进行调用的 for (Watcher watcher : list) { watcher.update(str); } } }
编写测试类:
public class Test { public static void main(String[] args) { Watched girl = new ConcreteWatched(); Watcher watcher1 = new ConcreteWatcher(); Watcher watcher2 = new ConcreteWatcher(); Watcher watcher3 = new ConcreteWatcher(); girl.addWatcher(watcher1); girl.addWatcher(watcher2); girl.addWatcher(watcher3); girl.notifyWatchers("开心"); } }
相关推荐
观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在C++中,这种模式经常用于游戏开发,特别是在像cocos2d-x这样的2D游戏引擎...
5. **应用实例**:观察者模式广泛应用于各种场景,如事件驱动编程、GUI组件通信、消息队列等。例如,当用户在网页上点击按钮时,按钮作为被观察者,会触发一系列事件,这些事件的监听器(观察者)会接收到通知并执行...
观察者模式是软件设计模式中的一种行为模式,它在面向对象编程中扮演着重要的角色,尤其是在C#这样的语言中。观察者模式的核心思想是定义一个一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象...
3. Program.cs:这是程序的主入口点,可能会初始化观察者模式的实例并驱动其运行。 4. Player.cs:玩家类,可能是一个观察者,关注盟友控制中心的状态变化。 5. IObserver.cs:接口文件,定义了观察者的通用行为,...
首先,设计模式分为三大类:创建型模式(如单例、工厂方法、抽象工厂、建造者、原型)、结构型模式(如适配器、桥接、装饰器、组合、外观、享元、代理)和行为型模式(如策略、模板方法、观察者、迭代器、访问者、...
现在,可以通过创建`Subject`实例,添加`ConcreteObserver`实例作为观察者,然后在`Subject`的状态改变时调用`notify()`方法,触发观察者的更新。 **应用示例** 例如,在一个新闻系统中,当有新的新闻发布时,可以...
观察者模式是软件设计模式中的一种行为模式,它在对象之间定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于事件处理、发布/订阅系统、以及...
观察者模式是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。在这个"观察者模式简单例子"中,我们将通过一个天气预报...
观察者模式-果园的监控 简单工厂模式-果园种植水果 建造者模式-建造不同的果园 原型模式-建造同样的果园 桥接模式-果园实现统一的种植方法 原型模式-建造同样的果园 原型模式-建造同样的果园 适配器模式-果园改变...
观察者模式,也被称为发布-订阅(Publish-Subscribe)模式,是软件设计模式中的行为模式之一,它在对象之间定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。...
观察者模式(Observer Pattern)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于实现事件驱动的系统或者...
在测试类中,我们实例化了被观察者和三个观察者,然后将观察者添加到被观察者中。当被观察者发生变化时,我们调用其notifyWatcher方法,通知所有观察者更新信息。 四、观察者模式的优点 观察者模式有以下几点优点...
观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在Android开发中,这种模式被广泛用于构建可扩展和灵活的系统,例如事件...
而使用观察者模式后,我们可以将这些事件抽象为独立的观察者对象,例如看NBA直播的同事和看股票的同事,他们都是观察者,而老板则可以被视为被观察者,他的行为(如返回工作)会触发观察者的行为(如关闭直播或股票...
【附加例4.1】利用中介者模式进行重构的实例 【附加例4.2】利用策略模式设计的相同数据的不同图表显示的实例 【附加例4.3】利用状态模式设计的天气状态软件 【附加例4.4】利用状态模式设计的中国个人...
PHP 设计模式实例之观察者模式、策略模式、简单工厂模式 PHP 设计模式实例之观察者模式、策略模式、简单工厂模式是指在 PHP 编程中应用设计模式来解决实际问题的实例。设计模式是一种通用的解决方案,可以重复使用...
观察者模式,也被称为发布-订阅(Publish-Subscribe)模式,是软件设计模式中的行为模式之一,它在对象间定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。...
观察者模式是软件设计模式中的一种行为模式,它在对象之间定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于事件处理、发布/订阅系统等场景。...
观察者模式(Observer Pattern)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于实现事件驱动的编程模型...
本项目"Hibernate+Struts2+观察者+工厂模式实例项目"就是一个典型的Java Web开发案例,它巧妙地结合了ORM框架Hibernate、MVC框架Struts2以及设计模式中的观察者模式和工厂模式,旨在提供一种高效、易于扩展的解决...