observer pattern (notification chain synchronization)

J. Cliff Dyer jcd at sdf.lonestar.org
Fri May 9 10:14:01 EDT 2008


That looks like a good approach to me.  Alternative to a dict would just
be a count of reported stocks tested against the total number of stocks,
but if one stock reports twice before another reports at all, you'll get
funny results.  Your method is probably better, in the general case.

Cheers,
Cliff


On Fri, 2008-05-09 at 13:51 +0000, Alan Isaac wrote:
> A question related to the observer pattern...
> 
> Suppose I have a variant: there are stocks, mutual funds, and investors.  Let us say that funds are observers for multiple stocks, and investors are observers for funds.  Once a "month" all stocks notify their observing funds of their end-of-month price, and *then* all fund to notify their observing investors of their end-of-month investment value. 
> 
> What is a good way to enforce this timing?  (I.e., a fund should not notify an its investors until all stocks have reported.)
> 
> Here is one way:
> 
> - for each fund, create a ``reportreceived`` dict that maps stocks to booleans (initially False)
> - as each stock notifies its funds, the fund changes False to True and checks ``all(reportreceived.values())`` to determine whether it is ok to notify investors.
> - When it is ok, the fund notifies investors and resets all the ``reportreceived`` values. 
> 
> Is this sensible enough? What are standard and better ways?
> 
> Thank you, 
> Alan Isaac 
> 
> PS I am drawing on the description of the observer pattern at
> <URL:http://www.dofactory.com/Patterns/PatternObserver.aspx#_self1>
> The real world aspects are just to add some concreteness.
> --
> http://mail.python.org/mailman/listinfo/python-list
> 




More information about the Python-list mailing list