4要素: 1观察者接口2具体的观察者3管理者接口4管理者实现类5调用
1观察者接口包含观察者行为方法
public interface Observer {
/**
* 当目标类发生变化时所执行的操作
* */
String doSomething();
}
2具体的观察者
//具体观察者A
@Slf4j
@Component("ObserverA")
public class ObserverA implements Observer {
@Override
public String doSomething() {
log.info("观察者A执行的业务操作");
return "观察者A执行的业务操作";
}
}
//具体观察者B
@Slf4j
@Component("ObserverB")
public class ObserverB implements Observer {
@Override
public String doSomething() {
log.info("观察者B执行的业务操作");
return "观察者B执行的业务操作";
}
}
3管理者接口
public interface Subject {
/* 添加观察者 */
void addGuanchazhe(Obse服务器托管网rver o服务器托管网bserver);
/* 通知所有观察者 */
void notifyAllGuanchazhe();
}
4管理者实现类中包含–观察者集合,并对集合可以做增加或者移除操作
@Component
@Slf4j
public class SubjectService implements Subject {
private List observerList = new ArrayList();
@Override
public void addGuanchazhe(Observer observer) {
observerList.add(observer);
}
@Override
public void notifyAllGuanchazhe() {
log.info("目标状态发生变化,发送通知给所有观察者");
observerList.stream().forEach(a->a.doSomething());
}
}
5调用
@RequestMapping("/guanchazhe")
@RestController
public class GuanchazheController {
@Autowired
Subject subject;
@Autowired
@Resource(name = "ObserverA")
Observer observerA;
@Autowired
@Resource(name = "ObserverB")
Observer observerB;
@GetMapping("/test")
public void test() {
subject.addGuanchazhe(observerA);
subject.addGuanchazhe(observerB);
subject.notifyAllGuanchazhe();
}
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: Python中直接查看对象值和使用print()输出的区别
直接用代码来描述这个问题的现象: >>> x = r’C:windowsnotepad.exe’ >>> x ‘C:windowsnotepad.exe’ >>> print(x) C:windowsnot…