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 @ 2017-06-14 10:44  逍遥散人95  阅读(1105)  评论(0编辑  收藏  举报