import java.util.hashmap;import java.util.map;/** * 主题类,被观察者对象 * */public class subject { private map<observer, observer> mapobserver = new hashmap<observer, observer>(); /** * 注册方法,表示订阅 * @param observer */ public void register(observer observer) { mapobserver.put(observer, observer); } /** * 取消订阅 * @param observer */ public void unregister(observer observer) { mapobserver.remove(observer); } /** * 通知所有观察者 */ public void notifyallobserver() { for (map.entry<observer, observer> entry : mapobserver.entryset()) { entry.getvalue().update(); } }}/** * 观察者接口 */public interface observer { public void update();}/** * 观察者1 */public class concreteobserver1 implements observer { @override public void update() { system.out.println("concreteobserver1 update..."); } }/** * 观察者2 */public class concreteobserver2 implements observer { @override public void update() { system.out.println("concreteobserver2 update..."); } }/** * 观察者模式的使用 */public class testobserver { /** * @param args */ public static void main(string[] args) { subject subject = new subject(); observer observer1 = new concreteobserver1(); observer observer2 = new concreteobserver2(); subject.register(observer1); subject.register(observer2); subject.notifyallobserver(); }}
设计模式笔记之三 观察者模式
最新推荐文章于 2025-12-05 17:02:52 发布
本文深入探讨了观察者模式的原理与应用,通过具体代码示例展示了如何在Java中实现这一模式。从主题类到观察者接口,再到具体观察者的实现,本文详细解析了各个组件的功能与交互过程。
1240

被折叠的 条评论
为什么被折叠?



