设计模式学习笔记——观察者模式-创新互联
观察者模式类图(截图来自《大话设计模式》ps:以生活中的故事来分析设计模式,使人不觉得枯燥无味,很赞的一本书!):
成都创新互联公司是少有的成都网站设计、成都网站建设、营销型企业网站、微信小程序开发、手机APP,开发、制作、设计、买链接、推广优化一站式服务网络公司,公司2013年成立,坚持透明化,价格低,无套路经营理念。让网页惊喜每一位访客多年来深受用户好评代码结构图:
Java版代码:
import java.util.ArrayList;
public class Observer {
public static void main(String[] args) {
Subject subject= new Secretary();
AbstractObserver observer1= new StockObserver("Marry", subject);
AbstractObserver observer2= new NBAObserver("Peter", subject);
subject.attach(observer1);
subject.attach(observer2);
subject.setSbjectState("老板回来了");
subject.inform();
}
}
abstract class Subject {
private String sbjectState;
private ArrayList observers = new ArrayList<>();
public void attach(AbstractObserver observer) {
observers.add(observer);
}
public void detach(AbstractObserver observer) {
observers.remove(observer);
}
public String getSbjectState() {
return sbjectState;
}
public void setSbjectState(String sbjectState) {
this.sbjectState = sbjectState;
}
public void inform() {
for (AbstractObserver o : observers) {
o.update();
}
}
}
class Boss extends Subject {
}
class Secretary extends Subject {
}
abstract class AbstractObserver {
private String name;
private Subject sub;
public AbstractObserver(String name, Subject sub) {
this.setName(name);
this.setSub(sub);
}
public abstract void update();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Subject getSub() {
return sub;
}
public void setSub(Subject sub) {
this.sub = sub;
}
}
class StockObserver extends AbstractObserver {
public StockObserver(String name, Subject sub) {
super(name, sub);
}
public void update() {
System.out.println(this.getSub().getSbjectState() + this.getName()
+ "关闭股票行情,继续工作!");
}
}
class NBAObserver extends AbstractObserver {
public NBAObserver(String name, Subject sub) {
super(name, sub);
}
@Override
public void update() {
System.out.println(this.getSub().getSbjectState() + this.getName()
+ "关闭NBA直播,继续工作!");
}
}
文章标题:设计模式学习笔记——观察者模式-创新互联
本文路径:http://hbruida.cn/article/djdggo.html