
import java.util.ArrayList;
import java.util.List;
public abstract class Subject {
/**
* 保存女朋友的集合
*/
private List<Observer> list = new ArrayList();
/**
* 添加人
*
* @param server
*/
public void attach(Observer server) {
list.add(server);
System.out.println("我新交了一个女朋友,名字叫做:" + server.getName());
}
/**
* 移除人
*
* @param server
*/
public void detach(Observer server) {
list.remove(server);
System.out.println("我和她分手了");
}
/**
* 通知所有的女朋友更新状态
*/
public void notifyObserver(String state) {
for (Observer observer : list) {
observer.update(state);
}
}
}
public interface Observer {
public String getName();
void update(String state);
}
public class MessageSubject extends Subject {
public void onClick(String state) {
notifyObserver(state);
}
}
public class GFObserver implements Observer {
public GFObserver(String name) {
this.name = name;
}
private String name;
public String getName() {
return name;
}
public void update(String state) {
System.out.println(this.name + "接收到新消息,男朋友最新状态:" + state);
}
}
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
Observer obser1 = new GFObserver("范冰冰");
Observer obser2 = new GFObserver("杨幂");
Observer obser3 = new GFObserver("Sisi");
Observer obser4 = new GFObserver("sasa");
MessageSubject message = new MessageSubject();
message.attach(obser1);
message.attach(obser2);
message.attach(obser3);
message.attach(obser4);
message.onClick("我在大保健");
message.detach(obser1);
message.onClick("泡吧");
}
}

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】