)
本文介绍了观察者模式其他常见设计模式在本系列其他文章有兴趣可了解文章目录观察者模式总结观察者模式又被称为发布订阅Publish/Subscribe模式它定义了一种一对多的依赖关系让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时会通知所有的观察者对象使他们能够自动更新自己。观察者模式有以下角色抽象主题具体主题抽象观察者具体观察者举一个微信公众号的例子抽象观察者publicinterfaceObserver{voidupdate(StringarticleTitle);}抽象主题publicinterfaceSubject{//订阅voidsubscribe(Observero);//取消订阅voidunsubscribe(Observero);//发布消息通知已订阅的观察者voidnotifyObservers(StringarticleTitle);}具体主题通过集合存已订阅观察者publicclassWeChatOfficialAccountimplementsSubject{privateListObserverusersnewArrayList();privateStringname;publicWeChatOfficialAccount(Stringname){this.namename;}Overridepublicvoidsubscribe(Observero){users.add(o);System.out.println(o.getClass().getSimpleName() 订阅了 name);}Overridepublicvoidunsubscribe(Observero){users.remove(o);System.out.println(o.getClass().getSimpleName() 取消订阅 name);}OverridepublicvoidnotifyObservers(StringarticleTitle){System.out.println(\nname 发布文章《articleTitle》);System.out.println(推送给 users.size() 位用户);for(Observeruser:users){user.update(articleTitle);}}}具体观察者publicclassWeChatUserimplementsObserver{privateStringname;publicWeChatUser(Stringname){this.namename;}Overridepublicvoidupdate(StringarticleTitle){System.out.println( name 收到推送《articleTitle》);//不同用户可以有不同反应if(articleTitle.contains(Java)||articleTitle.contains(技术)){System.out.println( ⭐ name 点赞 收藏);}else{System.out.println( name 已读。);}}}运行客户端publicclassClient{publicstaticvoidmain(String[]args){//创建公众号WeChatOfficialAccountaccountnewWeChatOfficialAccount(Java技术栈);//创建用户WeChatUseralicenewWeChatUser(Alice);WeChatUserbobnewWeChatUser(Bob);WeChatUsercharlienewWeChatUser(Charlie);//关注公众号account.subscribe(alice);account.subscribe(bob);account.subscribe(charlie);//发布文章→自动推送account.notifyObservers(Java 21 新特性详解);//Bob取关account.unsubscribe(bob);//再次发布→Bob收不到account.notifyObservers(Spring Boot 3.0 入门);}}结果WeChatUser订阅了Java技术栈WeChatUser订阅了Java技术栈WeChatUser订阅了Java技术栈Java技术栈 发布文章《Java21新特性详解》 推送给3位用户Alice收到推送《Java21新特性详解》 ⭐Alice点赞收藏Bob收到推送《Java21新特性详解》 ⭐Bob点赞收藏Charlie收到推送《Java21新特性详解》 ⭐Charlie点赞收藏WeChatUser取消订阅Java技术栈Java技术栈 发布文章《SpringBoot3.0入门》 推送给2位用户Alice收到推送《SpringBoot3.0入门》 Alice已读。Charlie收到推送《SpringBoot3.0入门》 Charlie已读。总结以上就是本期要讲的内容本文介绍了观察者模式其他常见设计模式在本系列其他文章有兴趣可了解