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订阅者:这是一个观察者!
分享到:
相关推荐
.java文件。观察者模式的例子。可以运行,同时帮助理解观察者模式。
我们说学习Java应该从Swing开始,那么学习Swing最重要的思想就是对于观察者模式的理解(Observer Pattern)。因为,该设计模式在Java Swing框架中贯穿了始终。对于C#的委托、代理概念所使用的Callback(回调模式--...
Observer (观察者模式) 又叫做发布/订阅(Publish/Subscribe)模式。 当一个对象的改变同时会影响其他对象的行为的时候,可以使用此设计模式。 l 主题对象 :一个需要被关注的主题对象,这个主题对象改变会影响...
这是java程序言必学的一个设计模式,这个小例子阐述明确,通俗易懂。
当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。
观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知Observer变化,这个例子是java内置观察者模式
从中,我们就可以得出观察者模式的定义。 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己的行为...
观察者模式学习源码,有需要的童鞋可以下载看一下
观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知Observer变化,这个例子自定义了一个观察者模式
观察者模式Demo,使用推模型。 在我的博客里写了关于我对观察者模式的理解,这里是小例子。
3.7.1. 目的 3.7.2. 例子 3.7.3. 注意 3.7.5. 代码 3.7.6. 测试
利用气象站监测的例子详细介绍观察者模式的使用方法,具体介绍观察者模式的所适应的场景情况
有兴趣的朋友可以先了解一下一些牛人的,比如李会军大哥设计模式篇中观察者的那一节 http://www.cnblogs.com/Terrylee/archive/2006/10/23/Observer_Pattern.html说说我自己对这模式的理解,其思想核心是:每个被...
1. 观察者模式 概念 观察者模式又被称为 发布-订阅 模式,这种模式定义了对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知,并完成自动更新。 优点 观察者与被观察者是...
Observer模式的简单例子,两个对话框作为观察者,观察同一个数据目标!
应许观察者 具有承诺支持的观察者实现。 它的行为类似于典型的同步,在这种情况下,一旦通知订户,您就可以在执行更新功能之前先等待订户执行 例子 给定一个博客帖子的创建者: import po = require ( 'promise-...
五、 一个实际应用观察者模式的例子 六、 观察者模式的优缺点 设计模式(20)-Visitor Pattern 一、 访问者(Visitor)模式 二、 访问者模式的结构 三、 示意性源代码 四、 一个实际应用Visitor模式的例子 ...
五、 一个实际应用观察者模式的例子 187 六、 观察者模式的优缺点 191 设计模式(20)-Visitor Pattern 192 一、 访问者(Visitor)模式 192 二、 访问者模式的结构 193 三、 示意性源代码 194 四、 一个实际应用...
观察者模式允许将 GUI 元素(控件和视图)与数据模型分离。 所有视图通过notify()/update()自动同步 例子: iw1 = interval_window(); iw2 = interval_window_flow(); iv = interval_view(); i1 = 间隔(2,8,6); ...