|
发表于 2019-3-7 13:14:12
|
显示全部楼层
demo:订阅报纸
2 r+ @) I* X: S- k) U% E特定问题:当一个对象的状态发生改变的时候,如何让依赖于它的所有对象得到通知。& L2 R9 p. L) M& D. a" _& k" D1 o
解决方案:观察者模式8 B% L7 L/ M) t; h% a0 v0 j" _) @- r
不使用模式的解决方案:5 M# ^& K" V' Y$ p, @' O/ E& E
L% F& _1 \- D: S! u9 u5 Z使用模式的解决方案:3 Q. I; i' j% K' B+ \, _
; P+ o, b) P: F% J- d3 a* B扩展:推模型和拉模型、java中的观察者模式; Q- N$ M: j n0 A2 Q2 Q' P
优点:观察者和目标之间的抽象耦合、实现了动态联动' e2 |# W+ A. c: P7 z) o* r' F
缺点:可能会引起无谓的操作
3 N" i, g' [+ y0 j: p- B本质:触发联动。
* F& R5 _" Y( U. w适用场景:1、一方面的操作依赖于另一方面的状态变化。demo:订阅报纸7 O0 `" Q0 |( K) K% ^' P! }
特定问题:当一个对象的状态发生改变的时候,如何让依赖于它的所有对象得到通知。
; L' O* n4 Z j! H8 Y/ c解决方案:观察者模式
& M3 D7 N( h7 q, G1 K6 l0 {不使用模式的解决方案:. U' D0 o: ^& G6 O! ?
8 [! H: T" q c( \1 I* k) z; w6 N使用模式的解决方案:
9 G9 w x3 K5 v. U+ v& E, v2 p
3 X. Q& ~* h( F" a2 v扩展:推模型和拉模型、java中的观察者模式3 s% F9 B* q. _' \+ P
优点:观察者和目标之间的抽象耦合、实现了动态联动0 ]0 U# I3 [" E0 d) p) N8 T/ ~
缺点:可能会引起无谓的操作8 M* O4 q+ t; e: Z
本质:触发联动。! s+ B9 }9 \, E* {7 R% U
适用场景:1、一方面的操作依赖于另一方面的状态变化。 |
|