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++中广泛应用,特别是在需要...
在这个"C++ 实现观察者模式小例子"中,我们看到它被应用到了显示器和报警器这两个组件上,它们根据泵的温度和压力来展示信息或触发警报。 首先,我们需要理解观察者模式的基本结构。在这个模式中,有三个主要角色:...
在这个"观察者模式简单例子"中,我们将通过一个天气预报版的例子来深入理解这一模式。 在《Head First设计模式》第2章的天气预告版示例中,有三个主要角色:Subject(主题)、Observer(观察者)和ConcreteSubject...
在C#编程中,观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。这个模式广泛应用于事件驱动编程,例如GUI系统、多线程通信等...
由于没有实际的文件内容,我们无法提供更具体的分析,但这个例子很好地展示了观察者模式的用途和结构。在阅读源码时,你可以关注主题如何管理观察者,以及如何在状态变化时有效地通知它们。同时,观察者如何响应这些...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...
在提供的压缩包文件中,`观察者模式模版和例子`可能包含了实现这些概念的代码示例,通过阅读和理解这些代码,你可以更好地掌握观察者模式的实现细节和应用方式。为了深入学习,建议先了解观察者模式的基本概念,然后...
在C#编程中,观察者模式(Observer Pattern)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。在这个例子中,我们将通过使用委托来实现这一模式。委托在C#中...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动的编程...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...
但在这个例子中,我们可能看到的是自定义实现的观察者模式,因为文件列表中包含的`Test.java`, `Customer1.java`, `Customer2.java`, `Noticer.java`这些文件没有使用标准库中的类,而是可能定义了自己的观察者和被...
Observer观察者模式是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态改变时通知多个“观察”该对象的其他对象。这个模式的核心概念是发布-订阅,即发布者(被观察对象)向订阅者(观察者)广播事件或...
标题"php SPL观察者模式例子"暗示我们将探讨如何在PHP中使用SPL库实现观察者模式。SPL库中的`SplObserver`和`SplSubject`接口是实现观察者模式的关键组件。 **观察者模式的核心概念** - **主题(Subject)**:主题...
观察者模式(Observer Pattern)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于事件驱动编程,使得多个...
观察者模式(Observer Pattern)是软件设计模式中的行为模式之一,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动或发布-...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动或者发布...
本篇文章将深入探讨Qt中的观察者模式(Observer Pattern),这是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 观察者模式的核心...
在给定的压缩包文件中,"设计模式例子,观察者模式,建造者模式" 提到了两种重要的设计模式:观察者模式(Observer Pattern)和建造者模式(Builder Pattern)。下面我们将深入探讨这两种设计模式的概念、应用场景、...