`

观察者模式(Observer)例子

阅读更多

 

public interface Subject
{
    public void addObserver(Observer observer);
    
    public void removeObserver(Observer observer);
    
    public void notifyObservers();
    
    public void notifyObservers(String blog);
}
public interface Observer
{
    public void update(String blog);
}
import java.util.ArrayList;
import java.util.List;

import com.huawei.observer.inter.Observer;
import com.huawei.observer.inter.Subject;

public class Blogger implements Subject
{
    private List<Observer> observers;
    
    private String blog;
    
    public Blogger()
    {
        observers=new ArrayList<Observer>();
    }
    
    public void addObserver(Observer observer)
    {
        observers.add(observer);
    }
    
    public void removeObserver(Observer observer)
    {
        observers.remove(observer);
    }
    
    public void notifyObservers()
    {
        for(Observer ob:observers)
        {
            ob.update(blog);
        }
    }
    
    public void notifyObservers(String blog)
    {
        this.blog=blog;
        notifyObservers();
    }
    
    public void writeNewBlog(String blog)
    {
        this.blog=blog;
        notifyObservers();
    }
}
import com.huawei.observer.inter.Observer;
/**
 * 邮件订阅者
 * <一句话功能简述>
 * <功能详细描述>
 * 
 * @author  gKF33650
 * @version  [版本号, 2010-10-25]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public class EmailSubscriber implements Observer
{
    
    public void update(String blog)
    {
        System.out.println("发送电子邮件:"+blog);
    }
    
}
import com.huawei.observer.inter.Observer;
/**
 * RSS订阅者
 * <一句话功能简述>
 * <功能详细描述>
 * 
 * @author  gKF33650
 * @version  [版本号, 2010-10-25]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
public class RssSubscriber implements Observer
{
    
    /**
     * RSS订阅者
     * @param blog
     */
    public void update(String email)
    {
        System.out.println("RSS订阅者:"+email);
    }
    
}
import com.huawei.observer.impl.Blogger;
import com.huawei.observer.impl.EmailSubscriber;
import com.huawei.observer.impl.RssSubscriber;
import com.huawei.observer.inter.Observer;
import com.huawei.observer.inter.Subject;

public class Test
{
    public static void main(String[] args)
    {
        Subject sub=new Blogger();
        
        //创建邮件订阅者
        Observer obemail=new EmailSubscriber();
        sub.addObserver(obemail);
        
        //创建RSS订阅者
        Observer obrss=new RssSubscriber();
        sub.addObserver(obrss);
        
        sub.notifyObservers("这是一个观察者!");
    }
}
执行结果:
发送电子邮件:这是一个观察者!
RSS订阅者:这是一个观察者!
 

分享到:
评论

相关推荐

    观察者模式Observer

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

    设计模式C++学习之观察者模式(Observer)

    观察者模式(Observer)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式在C++中广泛应用,特别是在需要...

    C++ 实现观察者模式小例子

    在这个"C++ 实现观察者模式小例子"中,我们看到它被应用到了显示器和报警器这两个组件上,它们根据泵的温度和压力来展示信息或触发警报。 首先,我们需要理解观察者模式的基本结构。在这个模式中,有三个主要角色:...

    观察者模式简单例子

    在这个"观察者模式简单例子"中,我们将通过一个天气预报版的例子来深入理解这一模式。 在《Head First设计模式》第2章的天气预告版示例中,有三个主要角色:Subject(主题)、Observer(观察者)和ConcreteSubject...

    接口实现C#观察者模式简单例子

    在C#编程中,观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。这个模式广泛应用于事件驱动编程,例如GUI系统、多线程通信等...

    观察者模式(Observer)

    由于没有实际的文件内容,我们无法提供更具体的分析,但这个例子很好地展示了观察者模式的用途和结构。在阅读源码时,你可以关注主题如何管理观察者,以及如何在状态变化时有效地通知它们。同时,观察者如何响应这些...

    设计模式--观察者模式java例子

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

    观察者模式模版和例子

    在提供的压缩包文件中,`观察者模式模版和例子`可能包含了实现这些概念的代码示例,通过阅读和理解这些代码,你可以更好地掌握观察者模式的实现细节和应用方式。为了深入学习,建议先了解观察者模式的基本概念,然后...

    委托实现C#观察者模式简单例子

    在C#编程中,观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在这个例子中,我们将通过使用委托来实现这一模式。委托在C#中...

    观察者模式的例子(java)

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

    设计模式之观察者模式Java实现

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

    设计模式之略见一斑(Observer观察者模式)

    但在这个例子中,我们可能看到的是自定义实现的观察者模式,因为文件列表中包含的`Test.java`, `Customer1.java`, `Customer2.java`, `Noticer.java`这些文件没有使用标准库中的类,而是可能定义了自己的观察者和被...

    Observer观察者模式

    Observer观察者模式是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。这个模式的核心概念是发布-订阅,即发布者(被观察对象)向订阅者(观察者)广播事件或...

    php SPL观察者模式例子

    标题"php SPL观察者模式例子"暗示我们将探讨如何在PHP中使用SPL库实现观察者模式。SPL库中的`SplObserver`和`SplSubject`接口是实现观察者模式的关键组件。 **观察者模式的核心概念** - **主题(Subject)**:主题...

    观察者模式demo例子

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

    设计模式-观察者模式-作业-observer.zip

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

    java 设计模式 观察者模式 简单实例 包括测试test类

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

    Qt设计模式之观察者模式

    本篇文章将深入探讨Qt中的观察者模式(Observer Pattern),这是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 观察者模式的核心...

    设计模式例子,观察者模式,建造者模式

    在给定的压缩包文件中,"设计模式例子,观察者模式,建造者模式" 提到了两种重要的设计模式:观察者模式(Observer Pattern)和建造者模式(Builder Pattern)。下面我们将深入探讨这两种设计模式的概念、应用场景、...

Global site tag (gtag.js) - Google Analytics