|
发表于 2019-3-7 13:14:12
|
显示全部楼层
demo:订阅报纸+ X% w8 ?: L! {9 P8 k) y
特定问题:当一个对象的状态发生改变的时候,如何让依赖于它的所有对象得到通知。# h+ w; c# l1 V* i c; S9 o
解决方案:观察者模式- g+ r/ Q+ ~- ^3 {
不使用模式的解决方案: {1 G& v% c e N/ R2 {) P
; S0 p; m! a) w! d- J- M% c* l. r/ k: [使用模式的解决方案: R0 H) P$ h% Y `7 s6 g/ C
- s4 U0 k; |) I6 Z扩展:推模型和拉模型、java中的观察者模式
1 z0 d: [2 j5 `5 p' m优点:观察者和目标之间的抽象耦合、实现了动态联动5 ?" _0 q% a t' J z; C) Q
缺点:可能会引起无谓的操作6 Z( {1 K/ E- P8 R( k/ k/ I, D
本质:触发联动。
' L5 P# Y$ m, I$ i/ W适用场景:1、一方面的操作依赖于另一方面的状态变化。demo:订阅报纸$ h# t9 ^# S7 W4 H( E! q
特定问题:当一个对象的状态发生改变的时候,如何让依赖于它的所有对象得到通知。6 i1 v$ W& s9 p" c; v5 Y r' N
解决方案:观察者模式7 \- @! g: T% h" {! ^, |
不使用模式的解决方案:
& Y" i) C' P. t$ ]
2 R1 D2 S2 E7 `9 ^5 E' ~7 q使用模式的解决方案:2 h4 H& t% F4 i1 ]
. i& {) G5 |3 K& X+ A
扩展:推模型和拉模型、java中的观察者模式' P4 {& X% R$ y8 p
优点:观察者和目标之间的抽象耦合、实现了动态联动+ B& T. _# D$ e5 {
缺点:可能会引起无谓的操作4 C+ `' v$ s, z/ N) B
本质:触发联动。
N$ M3 Q4 @! g D+ w% z6 b适用场景:1、一方面的操作依赖于另一方面的状态变化。 |
|