Android Observer观察模式基础入门

复制代码
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("泡吧");
    }
}
复制代码

posted @   宇少vlog  阅读(1107)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 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】
点击右上角即可分享
微信分享提示