码迷,mamicode.com
首页 > 其他好文 > 详细

读书笔记之设计模式-观察者模式

时间:2016-04-30 01:00:13      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

行为型的设计模式 - Oberver(观察者模式)

 

一般常见的观察者模式如:报纸订阅。

在web应用中的电商最常见的莫过于物流接口,如快递100收费版--主动推送。

 

出版者+订阅者=观察者

下见2个接口,

1、Subject(主题接口)

  method:

    register()      --用于注册订阅者

    remove()      --用于解除订阅者

    notifyMessage()    --用于通知订阅者消息

2、Observer(订阅者)

  method:

    update()        --让主题接口方法notifyMessage调用

  

下详见类代码:

package top.gabin.oa.web.design;

import java.util.Observable;
import java.util.Observer;

/**
 * 京东订阅者
 * @author linjiabin on  16/4/29
 */
public class JingdongObserver implements Observer {
    @Override
    public void update(Observable o, Object arg) {
        System.out.print("I‘m 京东");
        System.out.println(arg);
    }
}
package top.gabin.oa.web.design;

import java.util.Observable;
import java.util.Observer;

/**
 * 淘宝订阅者
 * @author linjiabin on  16/4/29
 */
public class TaobaoObserver implements Observer {
    @Override
    public void update(Observable o, Object arg) {
        System.out.print("I‘m 淘宝");
        System.out.println(arg);
    }
}
package top.gabin.oa.web.design;

import java.util.Observable;
import java.util.Observer;

/**
 * 快递100,物流主题
 * @author linjiabin on  16/4/29
 */
public class Kuaidi100Subject extends Observable {
    @Override
    public synchronized void addObserver(Observer o) {
        super.addObserver(o);
    }

    @Override
    public synchronized void deleteObserver(Observer o) {
        super.deleteObserver(o);
    }

    @Override
    public void notifyObservers() {
        super.notifyObservers();
    }

    @Override
    public void notifyObservers(Object arg) {
        super.notifyObservers(arg);
    }

    @Override
    public synchronized void deleteObservers() {
        super.deleteObservers();
    }

    @Override
    protected synchronized void setChanged() {
        super.setChanged();
    }

    @Override
    protected synchronized void clearChanged() {
        super.clearChanged();
    }

    @Override
    public synchronized boolean hasChanged() {
        return super.hasChanged();
    }

    @Override
    public synchronized int countObservers() {
        return super.countObservers();
    }
}
package top.gabin.oa.web.design;

import org.junit.Test;

/**
 * 测试类
 * @author linjiabin on  16/4/29
 */
public class TestObserver {

    @Test
    public void testObserver() {
        Kuaidi100Subject subject = new Kuaidi100Subject();
        TaobaoObserver taobaoObserver = new TaobaoObserver();
        subject.addObserver(taobaoObserver);
        subject.addObserver(new JingdongObserver());
        subject.setChanged();
        subject.notifyObservers("你的货已经到了");
    }

}

 

测试后的结果:

I‘m 京东你的货已经到了
I‘m 淘宝你的货已经到了

 

读书笔记之设计模式-观察者模式

标签:

原文地址:http://www.cnblogs.com/gabin/p/5447867.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!