软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。
汇总目录链接:【玩转23种Java设计模式】学习目录汇总整理
观察者模式是软件设计中的一种行为模式。它定义了对象之间的一对多关系,其中如果一个对象改变了状态,所有依赖它的对象都会自动被通知并更新。
这种模式包含了两种主要的角色,即被观察者(Subject)和观察者(Observer)。
订阅微信公众号文章。
public interface Subject {
void addObserver(Observer o);
void removeObserver(Observer o);
void notifyObserver();
}
@Slf4j
public class WeChatOfficialAccount implements Subject {
private List<Observer> list;
private String message;
public WeChatOfficialAccount() {
list = new ArrayList<>();
}
@Override
public void addObserver(Observer o) {
list.add(o);
}
@Override
public void removeObserver(Observer o) {
if (!list.isEmpty()) {
list.remove(o);
}
}
@Override
public void notifyObserver() {
for (Observer observer : list) {
observer.update(message);
}
}
public void setInfo(String a) {
this.message = a;
log.info("微信公众号更新,新发布一篇文章:" + a);
notifyObserver();
}
}
public interface Observer {
void update(String message);
}
@Slf4j
public class WeChatUser implements Observer {
private String name;
private String message;
public WeChatUser(String name) {
this.name = name;
}
@Override
public void update(String message) {
this.message = message;
log.info("用户:" + name + ", 收到订阅文章" + message);
}
}
public class Main {
public static void main(String[] args) {
WeChatOfficialAccount weChatOfficialAccount = new WeChatOfficialAccount();
weChatOfficialAccount.addObserver(new WeChatUser("user1"));
weChatOfficialAccount.addObserver(new WeChatUser("user2"));
weChatOfficialAccount.setInfo("《微服务架构》");
}
}
控制台输出:
微信公众号更新,新发布一篇文章:《微服务架构》
用户:user1, 收到订阅文章《微服务架构》
用户:user2, 收到订阅文章《微服务架构》
事件处理、图形用户界面(GUI)、订阅发布消息。