首页 / 设计模式 / 设计模式-观察者模式 实现
设计模式-观察者模式 实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了设计模式-观察者模式 实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1572字,纯文字阅读大概需要3分钟。
内容图文
![设计模式-观察者模式 实现](/upload/InfoBanner/zyjiaocheng/1308/3dc8e76d87e84db1b2e56fe212d6eacd.jpg)
观察者模式:
已一对多的方式,通过制定一个主题,使多个不同的订阅者能时时的接收到最新的消息。
定义一个主题:
主题中处理基本的添加/删除 订阅者 消息发布 还加入一个change锁 可以负责消息发布的控制,将灵活的控制消息的发布,减少不必要的消息传播。
消息的发布主要是依靠接口的特性传播,通过实现一个订阅者接口来设定订阅者,主题不需要具体的订阅者是谁,只需要在消息更新时对这个接口的所有实现发布即可。
public interface Subjects { void add(Object obj); void remove(Object obj); void notifyObserver(); void setMessage(String msg); void setChange(); }
public class Subject implements Subjects{ private ArrayList<Object> observers; private String message; private boolean lock; public Subject() { observers = new ArrayList<>(); } @Override public void add(Object obj) { observers.add(obj); } @Override public void remove(Object obj) { int i = observers.indexOf(obj); if (i > 0) { observers.remove(obj); } } @Override public void notifyObserver() { if (lock) { for (int i = 0; i < observers.size(); i++) { Observers observer = (Observers)observers.get(i); observer.update(message); } lock = false; } } public void change() { setChange(); notifyObserver(); } @Override public void setMessage(String msg) { this.message = msg; change(); } @Override public void setChange() { lock = true; } }
订阅者
主题消息的发布与订阅者之间有个共同的方法,通过这个方法订阅者来接受发布出来的消息。 单纯的实现订阅接口但是不重写方法而是自己编写另一个方法就无法实现消息的接收了。
public interface Observers { public void update (String message); }
public class Observer implements Observers{ public Observer(Subject s) { s.add(this); } @Override public void update(String message) { System.out.println("订阅主题发布的消息:" + message); } }
另外java提供了Observer和Observable现成的api可供我们直接使用,setchange的想法也是参考这api的。
原文:https://www.cnblogs.com/culushitai/p/8487047.html
内容总结
以上是互联网集市为您收集整理的设计模式-观察者模式 实现全部内容,希望文章能够帮你解决设计模式-观察者模式 实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。