观察者模式 Observer Pattern
2018-02-18 22:49
537 查看
观察者模式是指,当一个类状态发生变化时,会通知所有的观察者类,主要用于有数据变化或者是状态变化的场景下,比如listerner监听器,一般采用异步的方式。
观察类接口:public interface Observer {
void update(String name);
}观察者实现:public class ConsoleObserver implements Observer{
@Override
public void update(String name) {
System.out.println("console:新名字是:"+name);
}
}
被观察者类:public class Subject {
private List<Observer> list = new ArrayList<>();
private String name;
public void addObserver(Observer obj){
list.add(obj);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
// 通知所有的观察者对象,并且把新名字传入
notifyAllObservers(this.name);
}
private void notifyAllObservers(String name) {
for (Observer obj : list) {
obj.update(name);
}
}
}测试类:public class Test {
public static void main(String[] args) {
Subject sub = new Subject();
sub.addObserver(new ConsoleObserver());
sub.addObserver(new LogObserver());
sub.setName("123");
}
}
观察类接口:public interface Observer {
void update(String name);
}观察者实现:public class ConsoleObserver implements Observer{
@Override
public void update(String name) {
System.out.println("console:新名字是:"+name);
}
}
public class LogObserver implements Observer { @Override public void update(String name) { System.out.println("log:新名字是:"+name); } }
被观察者类:public class Subject {
private List<Observer> list = new ArrayList<>();
private String name;
public void addObserver(Observer obj){
list.add(obj);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
// 通知所有的观察者对象,并且把新名字传入
notifyAllObservers(this.name);
}
private void notifyAllObservers(String name) {
for (Observer obj : list) {
obj.update(name);
}
}
}测试类:public class Test {
public static void main(String[] args) {
Subject sub = new Subject();
sub.addObserver(new ConsoleObserver());
sub.addObserver(new LogObserver());
sub.setName("123");
}
}
相关文章推荐
- 设计模式之四 观察者模式(Observer Pattern)
- Java Design Pattern Observer 观察者模式
- 观察者模式-Observer Pattern
- 设计模式之 观察者模式 the observer design pattern
- 设计模式原来如此-观察者模式(Observer Pattern)
- 我所理解的设计模式(C++实现)——观察者模式(Observer Pattern)
- 乐在其中设计模式(C#) - 观察者模式(Observer Pattern)
- 观察者模式 Observer Pattern — 三国演义之超级间谍战 — 美女貂蝉的故事
- 浅谈 java 设计模式--观察者模式(Observer pattern)
- 24种设计模式--观察者模式【Observer Pattern】
- 观察者模式(Observer Pattern)
- jQuery中的观察者模式(Observer Pattern)
- 设计模式心得:观察者模式 (observer pattern)
- Java设计模式之观察者模式(Observer Pattern)
- Net设计模式之观察者模式(Observer Pattern)(2)
- 设计模式之观察者模式(Observer Pattern)
- 设计模式----行为型模式之观察者模式(Observer Pattern)
- 用最简单的例子理解观察者模式(Observer Pattern)
- .NET设计模式(19):观察者模式(Observer Pattern)
- .NET设计模式(19):观察者模式(Observer Pattern)