观察者模式(Observer)_java实现
2021-03-04 22:29
标签:观察者模式 block end upd this sub string class alt //20210124 观察者模式(Observer)_java实现 标签:观察者模式 block end upd this sub string class alt 原文地址:https://www.cnblogs.com/lavender-pansy/p/14332934.html
写在前面:刚期末考试完,考了面向对象,里边儿有23个设计模式,我寻思着考完挨个儿实现一下,本文实现观察者模式观察者模式核心思想:
程序源代码:
/**
* 测试主类
*/
public class Main {
public static void main(String[] args) {
//前台作为通知者(也就是被观察者,被观察者通知所有观察者)
Secretary secretary = new Secretary();
StockObserver observer1 = new StockObserver("adam",secretary);
NbaObserver observer2 = new NbaObserver("tom",secretary);
//前台通知---进入观察者列表中的个体都会被通知到做出相应的动作,没有加进去的就不会做出相应动作
secretary.attach(observer1);
secretary.attach(observer2);
//未通知到,因为已经解除绑定了
// secretary.detach(observer1);
//老板回来了
secretary.setAction("小心!Boss回来了!");
//发通知
secretary.notifyObservers();
}
}
/**
* 通知者接口
*/
public interface Subject {
//增加
void attach(Observer observer);
//删除
void detach(Observer observer);
//通知
void notifyObservers();
//状态
public void setAction(String action);
public String getAction();
}
/**
* 观察者父类
*/
public abstract class Observer {
protected String name;
protected Subject subject;
public Observer(String name,Subject subject){
this.name = name;
this.subject = subject;
}
public abstract void update();
}
/**
* 被观察者
*/
import java.util.LinkedList;
import java.util.List;
public class Secretary implements Subject{
//同事列表
private List
/**
* 股票类观察者
*/
public class StockObserver extends Observer{
public StockObserver(String name,Subject subject) {
super(name, subject);
}
@Override
public void update() {
System.out.println(subject.getAction() + "\n" + name + "关闭股票行情,继续工作");
}
}
/**
* Nba类观察者
*/
public class NbaObserver extends Observer{
public NbaObserver(String name, Subject subject) {
super(name, subject);
}
@Override
public void update() {
System.out.println(subject.getAction()+"\n"+name+"关闭NBA,继续工作");
}
}
上一篇:算法与设计专题:14、布隆过滤器
下一篇:Java基础之异常
文章标题:观察者模式(Observer)_java实现
文章链接:http://soscw.com/index.php/essay/60193.html