`

观察者模式(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订阅者:这是一个观察者!
 

分享到:
评论

相关推荐

    观察者模式的例子(java)

    .java文件。观察者模式的例子。可以运行,同时帮助理解观察者模式。

    详解Observer Pattern(观察者模式)在Java中的使用原理

    我们说学习Java应该从Swing开始,那么学习Swing最重要的思想就是对于观察者模式的理解(Observer Pattern)。因为,该设计模式在Java Swing框架中贯穿了始终。对于C#的委托、代理概念所使用的Callback(回调模式--...

    设计模式 观察者 发布/订阅 Observer

    Observer (观察者模式) 又叫做发布/订阅(Publish/Subscribe)模式。 当一个对象的改变同时会影响其他对象的行为的时候,可以使用此设计模式。 l 主题对象 :一个需要被关注的主题对象,这个主题对象改变会影响...

    观察者(Observer)模式

    这是java程序言必学的一个设计模式,这个小例子阐述明确,通俗易懂。

    观察者模式

    当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。

    Java内置观察者模式

    观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知Observer变化,这个例子是java内置观察者模式

    C#设计模式(17)——观察者模式(Observer Pattern).pdf

    从中,我们就可以得出观察者模式的定义。  观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己的行为...

    观察者模式demo例子

    观察者模式学习源码,有需要的童鞋可以下载看一下

    自定义观察者模式

    观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知Observer变化,这个例子自定义了一个观察者模式

    观察者模式Demo

    观察者模式Demo,使用推模型。 在我的博客里写了关于我对观察者模式的理解,这里是小例子。

    wuxiumu#Write-maintainable-code#07-观察者模式(Observer)1

    3.7.1. 目的 3.7.2. 例子 3.7.3. 注意 3.7.5. 代码 3.7.6. 测试

    Java 观察者模式

    利用气象站监测的例子详细介绍观察者模式的使用方法,具体介绍观察者模式的所适应的场景情况

    Javascript 模式实例 观察者模式

    有兴趣的朋友可以先了解一下一些牛人的,比如李会军大哥设计模式篇中观察者的那一节 http://www.cnblogs.com/Terrylee/archive/2006/10/23/Observer_Pattern.html说说我自己对这模式的理解,其思想核心是:每个被...

    Vue源码学习 — 响应式原理之观察者模式

    1. 观察者模式 概念 观察者模式又被称为 发布-订阅 模式,这种模式定义了对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知,并完成自动更新。 优点 观察者与被观察者是...

    Observer模式代码

    Observer模式的简单例子,两个对话框作为观察者,观察同一个数据目标!

    promise-observer:JS中的观察者模式,通过promise实现

    应许观察者 具有承诺支持的观察者实现。 它的行为类似于典型的同步,在这种情况下,一旦通知订户,您就可以在执行更新功能之前先等待订户执行 例子 给定一个博客帖子的创建者: import po = require ( 'promise-...

    C#设计模式大全

    五、 一个实际应用观察者模式的例子 六、 观察者模式的优缺点 设计模式(20)-Visitor Pattern 一、 访问者(Visitor)模式 二、 访问者模式的结构 三、 示意性源代码 四、 一个实际应用Visitor模式的例子 ...

    C#设计模式.PDF

    五、 一个实际应用观察者模式的例子 187 六、 观察者模式的优缺点 191 设计模式(20)-Visitor Pattern 192 一、 访问者(Visitor)模式 192 二、 访问者模式的结构 193 三、 示意性源代码 194 四、 一个实际应用...

    观察者模式:观察者模式的一个例子-matlab开发

    观察者模式允许将 GUI 元素(控件和视图)与数据模型分离。 所有视图通过notify()/update()自动同步 例子: iw1 = interval_window(); iw2 = interval_window_flow(); iv = interval_view(); i1 = 间隔(2,8,6); ...

Global site tag (gtag.js) - Google Analytics