Java中的观察者模式

来源:互联网 发布:mac唇膏真假对比 编辑:程序博客网 时间:2024/04/29 23:51

观察者模式的定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新

假设现在有一个需求,客户支付了订单款项,这时财务需要开具发票,出纳需要记账,配送员需要配货

观察者接口

package com.zw.mymaven;//抽象观察者角色public interface Watcher {public void update();}

主题接口

package com.zw.mymaven;//被观察者必有3个功能,增加,删除,更新public interface Watched {public void addWatcher(Watcher watcher);public void removeWatcher(Watcher watcher);public void notifyWatchers();}

观察者实现类

package com.zw.mymaven;public class Worker implements Watcher {public void update() {System.out.println("财务已开具发票,出纳已记账,配送员已配货");}}

主题实现类

package com.zw.mymaven;import java.util.ArrayList;import java.util.List;public class Product implements Watched {    private List<Watcher> list = new ArrayList<Watcher>();    public void addWatcher(Watcher watcher) {        list.add(watcher);    }    public void removeWatcher(Watcher watcher) {        list.remove(watcher);    }    public void notifyWatchers() {        for (Watcher watcher : list) {            watcher.update();        }    }}

测试类

package com.zw.mymaven;public class Test2 {public static void main(String[] args) {Watched product = new Product();Watcher Caiwu = new Worker();Watcher Chuna = new Worker();Watcher Peisong = new Worker();product.addWatcher(Caiwu);product.addWatcher(Chuna);product.addWatcher(Peisong);product.notifyWatchers();}}




0 0
原创粉丝点击