|
发表于 2019-3-7 13:14:12
|
显示全部楼层
demo:订阅报纸
; w. T3 M4 C( }特定问题:当一个对象的状态发生改变的时候,如何让依赖于它的所有对象得到通知。4 n$ y. r5 n4 @1 p
解决方案:观察者模式
% J; X5 y, k' V* n不使用模式的解决方案:
0 E8 \( h% o) B; g( W o4 |0 w D b5 r( t0 h; C8 v! N( Z
使用模式的解决方案:( m7 {+ f9 s \; X8 T
1 l* c) Q, ?! j: y! _ @/ ?8 b5 h
扩展:推模型和拉模型、java中的观察者模式
: E; A) V. _$ k, C& {优点:观察者和目标之间的抽象耦合、实现了动态联动0 P7 k" A& a' `: s) M9 x# ?8 i
缺点:可能会引起无谓的操作5 i( G. ]5 M& b/ |5 K8 [$ h$ }
本质:触发联动。) u& a4 \& v; E2 Z3 q
适用场景:1、一方面的操作依赖于另一方面的状态变化。demo:订阅报纸
6 N# t5 k( L( b0 Q5 S+ P特定问题:当一个对象的状态发生改变的时候,如何让依赖于它的所有对象得到通知。
; a6 \1 O8 K$ a, C# P+ ]1 e解决方案:观察者模式
* l$ S/ b! Z3 M2 i不使用模式的解决方案:" Y% L1 ^7 |& X0 d) g: @0 I& |, `& t
' s9 s& I! R3 k# J% ?, R使用模式的解决方案:; N4 ]0 t& O$ k7 c! j3 }+ H) K
, k6 s( L( q* K) R
扩展:推模型和拉模型、java中的观察者模式4 n( B# l- W0 {) h+ q* d" p: H
优点:观察者和目标之间的抽象耦合、实现了动态联动7 m3 ^" ^' B1 t+ D$ J, s3 z" t
缺点:可能会引起无谓的操作
# s( h$ Y" ]+ F2 s* F, }% y本质:触发联动。& K1 H2 H1 b- v) ^
适用场景:1、一方面的操作依赖于另一方面的状态变化。 |
|