观察者模式实现

观察者模式实现

package com.wh.observer;

/**
 * 抽象观察者角色
 * Created by zyb on 15/11/12.
 */
public interface Watchers {

    /**
     * 接收所有被观察者消息
     *
     * @param o 被观察者传递参数
     */
    void update(Object o);
}
package com.wh.observer;

/**
 * 抽象主题角色,被观察
 * Created by zyb on 15/11/12.
 */
public interface Watcheds {
    /**
     * 添加观察者
     *
     * @param watcher 观察者对象
     */
    void addWatcher(Watchers watcher);

    /**
     * 移除观察者
     *
     * @param watcher 观察者对象
     */
    void removeWatcher(Watchers watcher);

    /**
     * 通知观察者
     *
     * @param o 通知参数
     */
    void notifyWatchers(Object o);
}
package com.wh.observer.demo;

import com.wh.observer.Watcheds;
import com.wh.observer.Watchers;

import java.util.ArrayList;
import java.util.List;

/**
 * 被观察对象
 * Created by zyb on 15/11/12.
 */
public class TestBean implements Watcheds {
    /**
     * 存放观察者
     */
    private List<Watchers> list = new ArrayList<Watchers>();

    /**
     * 添加观察者
     *
     * @param watcher 观察者对象
     */
    @Override
    public void addWatcher(Watchers watcher) {
        list.add(watcher);
    }

    /**
     * 移除观察者
     *
     * @param watcher 观察者对象
     */
    @Override
    public void removeWatcher(Watchers watcher) {
        list.remove(watcher);
    }

    /**
     * 通知观察者
     *
     * @param o 通知参数
     */
    @Override
    public void notifyWatchers(Object o) {
        for (Watchers watcher : list) {
            watcher.update(o);
        }
    }
}
package com.wh.observer.demo;

import com.wh.observer.Watchers;

/**
 * 观察者
 * Created by zyb on 15/11/12.
 */
public class TestWatcher implements Watchers {

    @Override
    public void update(Object o) {
        System.out.println("---" + o);
    }
}
package com.wh.observer.demo;

import com.wh.observer.Watcheds;
import com.wh.observer.Watchers;

/**
 * 测试调用
 * Created by zyb on 15/11/12.
 */
public class Test {
    public static void main(String[] args) {

        //实例化被观察者对象
        Watcheds watched = new TestBean();

        //观察者对象
        Watchers watcher = new TestWatcher();
        Watchers watcher2 = new TestWatcher();

        //添加观察者对象
        watched.addWatcher(watcher);

        //移除观察者对象
        watched.removeWatcher(watcher2);

        //通知观察者对象
        watched.notifyWatchers("测试");//object类型参数
    }

}

 上一篇
获取文件头信息进行文件类型识别验证 获取文件头信息进行文件类型识别验证
获取文件头信息进行文件类型识别验证import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.HashM
2019-08-19
下一篇 
解析excel 解析excel
解析excelpackage com.util; import org.apache.poi.ss.usermodel.*; import java.io.File; import java.io.FileInputStream; im
2019-08-19
  目录