`
Xcupidtx
  • 浏览: 14940 次
社区版块
存档分类
最新评论

观察者模式 - 实例 (转载)

    博客分类:
  • JAVA
 
阅读更多

程序实例

  通过程序实例来说明观察者模式:

  首先定义抽象的观察者:

//抽象观察者角色
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("开心");
    }

}
复制代码
分享到:
评论

相关推荐

    c++观察者模式实例

    观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在C++中,这种模式经常用于游戏开发,特别是在像cocos2d-x这样的2D游戏引擎...

    设计模式-观察者

    5. **应用实例**:观察者模式广泛应用于各种场景,如事件驱动编程、GUI组件通信、消息队列等。例如,当用户在网页上点击按钮时,按钮作为被观察者,会触发一系列事件,这些事件的监听器(观察者)会接收到通知并执行...

    C# 观察者模式实例

    观察者模式是软件设计模式中的一种行为模式,它在面向对象编程中扮演着重要的角色,尤其是在C#这样的语言中。观察者模式的核心思想是定义一个一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象...

    C#设计模式—观察者模式应用实例

    3. Program.cs:这是程序的主入口点,可能会初始化观察者模式的实例并驱动其运行。 4. Player.cs:玩家类,可能是一个观察者,关注盟友控制中心的状态变化。 5. IObserver.cs:接口文件,定义了观察者的通用行为,...

    设计模式-实例代码

    首先,设计模式分为三大类:创建型模式(如单例、工厂方法、抽象工厂、建造者、原型)、结构型模式(如适配器、桥接、装饰器、组合、外观、享元、代理)和行为型模式(如策略、模板方法、观察者、迭代器、访问者、...

    观察者模式 - PHP版

    现在,可以通过创建`Subject`实例,添加`ConcreteObserver`实例作为观察者,然后在`Subject`的状态改变时调用`notify()`方法,触发观察者的更新。 **应用示例** 例如,在一个新闻系统中,当有新的新闻发布时,可以...

    观察者模式1Demo

    观察者模式是软件设计模式中的一种行为模式,它在对象之间定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于事件处理、发布/订阅系统、以及...

    观察者模式简单例子

    观察者模式是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。在这个"观察者模式简单例子"中,我们将通过一个天气预报...

    c# 设计模式实例教程

    观察者模式-果园的监控 简单工厂模式-果园种植水果 建造者模式-建造不同的果园 原型模式-建造同样的果园 桥接模式-果园实现统一的种植方法 原型模式-建造同样的果园 原型模式-建造同样的果园 适配器模式-果园改变...

    观察者模式(发布-订阅)(转载含实例)

    观察者模式,也被称为发布-订阅(Publish-Subscribe)模式,是软件设计模式中的行为模式之一,它在对象之间定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。...

    设计模式系列博客--观察者模式

    观察者模式(Observer Pattern)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于实现事件驱动的系统或者...

    android Observer(观察者模式)_案例祥解.pdf

    在测试类中,我们实例化了被观察者和三个观察者,然后将观察者添加到被观察者中。当被观察者发生变化时,我们调用其notifyWatcher方法,通知所有观察者更新信息。 四、观察者模式的优点 观察者模式有以下几点优点...

    Android观察者模式实例分析

    观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在Android开发中,这种模式被广泛用于构建可扩展和灵活的系统,例如事件...

    C# 观察者模式实例介绍

    而使用观察者模式后,我们可以将这些事件抽象为独立的观察者对象,例如看NBA直播的同事和看股票的同事,他们都是观察者,而老板则可以被视为被观察者,他的行为(如返回工作)会触发观察者的行为(如关闭直播或股票...

    体系结构学习代码!特别详细丰富

     【附加例4.1】利用中介者模式进行重构的实例  【附加例4.2】利用策略模式设计的相同数据的不同图表显示的实例  【附加例4.3】利用状态模式设计的天气状态软件  【附加例4.4】利用状态模式设计的中国个人...

    PHP设计模式实例之(观察者模式、策略模式、简单工厂模式)借鉴.pdf

    PHP 设计模式实例之观察者模式、策略模式、简单工厂模式 PHP 设计模式实例之观察者模式、策略模式、简单工厂模式是指在 PHP 编程中应用设计模式来解决实际问题的实例。设计模式是一种通用的解决方案,可以重复使用...

    观察者模式最佳实践

    观察者模式,也被称为发布-订阅(Publish-Subscribe)模式,是软件设计模式中的行为模式之一,它在对象间定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。...

    java观察者模式Demo

    观察者模式是软件设计模式中的一种行为模式,它在对象之间定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于事件处理、发布/订阅系统等场景。...

    观察者模式代码(JAVA)

    观察者模式(Observer Pattern)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于实现事件驱动的编程模型...

    Hibernate+struts2+观察者+工厂模式实例项目

    本项目"Hibernate+Struts2+观察者+工厂模式实例项目"就是一个典型的Java Web开发案例,它巧妙地结合了ORM框架Hibernate、MVC框架Struts2以及设计模式中的观察者模式和工厂模式,旨在提供一种高效、易于扩展的解决...

Global site tag (gtag.js) - Google Analytics