200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > java 设计模式之 观察者模式 发布订阅(Publisher/Subscribe)模式

java 设计模式之 观察者模式 发布订阅(Publisher/Subscribe)模式

时间:2021-01-16 03:23:11

相关推荐

java  设计模式之 观察者模式   发布订阅(Publisher/Subscribe)模式

interface Subject {//通知人void setAction(String action);void attach(Observer observer);void detach(Observer observer);void notifyALL();}interface Observer {//要通知的对象,在接收通知后做出相应的改变void update();}class Boss implements Subject {private List<Observer> list = new LinkedList<>();@Overridepublic void setAction(String action) {System.out.println(action);}@Overridepublic void attach(Observer observer) {list.add(observer);}@Overridepublic void detach(Observer observer) {list.remove(observer);}@Overridepublic void notifyALL() {for (Observer o : list) {o.update();}}}//Secretary类与Boss类类似class Secretary implements Subject {@Overridepublic void setAction(String action) {System.out.println(action);}@Overridepublic void attach(Observer observer) {}@Overridepublic void detach(Observer observer) {}@Overridepublic void notifyALL() {}}//接收通知的人class Watcher implements Observer {private String name;private Subject subject;public Watcher(String name, Subject subject) {this.name = name;this.subject = subject;}@Overridepublic void update() {//更新操作System.out.println(name + "关闭B站,继续工作");}}class NBAfans implements Observer {private String name;private Subject subject;public NBAfans(String name, Subject subject) {this.name = name;this.subject = subject;}@Overridepublic void update() {System.out.println(name + "关闭NBA直播,继续工作");}public static void main(String[] args) {Boss boss = new Boss();Watcher watcher = new Watcher("Zhangsan", boss);NBAfans fans = new NBAfans("Lisi", boss);boss.attach(watcher);boss.attach(fans);boss.setAction("老板回来了!");boss.notifyALL();}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。