观察者模式
来源:互联网 发布:查询 域名 最早 注册人 编辑:程序博客网 时间:2024/06/01 09:17
观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主体对象,这个主体对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。
下面是观察者模式的结构图:
下面演示一个Demo:
Subject类:
abstract class Subject {private List<Observer> observers = new ArrayList<Observer>();public void add(Observer observer) {observers.add(observer);}public void delete(Observer observer) {observers.remove(observer);}public void notice() {for(Observer observer : observers)observer.update();}}
它的实现类:
public class ConcreteSubject extends Subject{private String SubjectState;public String getSubjectState() {return SubjectState;}public void setSubjectState(String SubjectState) {this.SubjectState = SubjectState;}}
Observer类:
abstract class Observer {public abstract void update();}
它的实现类:
public class ConcreteObserver extends Observer{private String name;private String ObserverState;private ConcreteSubject subject;public ConcreteObserver(ConcreteSubject subject, String name) {this.subject = subject;this.name = name;}@Overridepublic void update() {ObserverState = subject.getSubjectState();System.out.println(name + " 新状态是" + ObserverState);}public ConcreteSubject getSubject() {return subject;}public void setSubject(ConcreteSubject subject) {this.subject = subject;}}
客户端:
public class Client {public static void main(String[] args) {ConcreteSubject subject = new ConcreteSubject();subject.add(new ConcreteObserver(subject, "A"));subject.add(new ConcreteObserver(subject, "B"));subject.add(new ConcreteObserver(subject, "C"));subject.setSubjectState("老板来着");subject.notice();}}
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 智能手机游戏个人开发者和小团队如何赚钱
- 微博@用户功能的简要实现
- Oracle下绝对文件号和相对文件号区别
- 一个软件工程师在北京的反省
- {@link}与{@linkplain}的使用
- 观察者模式
- 位操作基础
- shellcode之一:栈溢出
- java 求和,平均数
- java集合小结
- vs2012
- 将两个DataTable合并——DataTable.Merge 方法
- 再叙数据库——数据库视频总结
- windows bat (批处理)——IF详解