观察者模式

来源:互联网 发布:java 修改配置文件 编辑:程序博客网 时间:2024/04/29 23:06
/** * 多对一的关系 *  * 场景:经常涉及到多个对象对一个特殊的对象比较感兴趣,当特殊对象有变化时其他多个对象想要这道 *  */


/** * 主题 * * */public interface Theme {public void addObserver(Obsever obsever);public void delObServer(Obsever observer);public void notifyObservers();}

/** * 具体主题 *  *此处场景扮演是 求职中中心 */public class JuTiTheme implements Theme{public List<Obsever> observerList;private boolean isNotify;public JuTiTheme(){observerList = new ArrayList<Obsever>();}public void addObserver(Obsever obsever) {observerList.add(obsever);}public void notifyObservers() {for (Obsever obsever : observerList) {obsever.herePhone();}}public void delObServer(Obsever observer) {if (observerList.add(observer)) {observerList.remove(observer);} }//发布消息public void giveMessage(String msg){isNotify = true;if (isNotify) {notifyObservers();}isNotify = false;}public List<Obsever> getList(){return observerList;}}


/** * 观察者 * */public interface Obsever {public abstract void herePhone();}

/** * 具体观察者 *  * 相当于场景中的学生求职人员 * */public class WorkerObserver implements Obsever{/** *  * @param theme 相当于求职者中心 */public WorkerObserver(Theme theme){theme.addObserver(this);}public void herePhone() {System.out.println("我是工作者,我接听到了电话");}}


/** * 具体观察者 *  * 相当于场景中的学生求职人员 * */public class StudentObsever implements Obsever{/** *  * @param theme 相当于求职者中心 */public StudentObsever(Theme theme){theme.addObserver(this);}public void herePhone() {System.out.println("我是工学生,我接听到了电话");}}

public class Main {/** * 多对一的关系 *  * 场景:经常涉及到多个对象对一个特殊的对象比较感兴趣,当特殊对象有变化时其他多个对象想要这道 *  */public static void main(String[] args) {JuTiTheme juTiTheme = new JuTiTheme();//具体主题:求职者中心StudentObsever studentObsever = new StudentObsever(juTiTheme);WorkerObserver workerObserver = new WorkerObserver(juTiTheme);juTiTheme.giveMessage("");}}


0 0
原创粉丝点击