首页 响应式设计
文章
取消

响应式设计

观察者模式到底是谁持有谁?

在 C++反应式编程书中,开头就有一个范例

1
2
3
4
5
6
7
8
9
int main()
{
      int x[] = { 1,2,3,4,5 };
      EvenNumberObservable *t = new EvenNumberObservable(x, 5);
      IObserver<int>> *xy = new SimpleObserver();
      t->Subscribe(*xy);
      delete xy; delete t;
      return 0;
}

这种响应式编程的观察者模式我觉得很奇怪吗明明t是observable,是一种数据,xy是observer,是观察者,那么应该是观察者订阅数据,应该是observer->subscribe(observable)这样的语义更加自然吧?为什么反过来了?

其实并不奇怪。因为很多情况下响应式编程是“推”式设计(push-based)。把观察者注册进被观察者是一种更方便的行为。也就是当被观察者接收到数据变化,可以把信息“推”到注册进来的观察者里。这样更合理

书籍列表:

https://github.com/apachecn/apachecn-c-cpp-zh/tree/master

  1. C++反应式编程
本文由作者按照 CC BY 4.0 进行授权