PROPAGATOR is a family of patterns for consistently updating objects in a dependency network. The propagator patterns are found in such diverse applications as MAKE, WWW, spreadsheets, GUIs, reactive control systems, simulation systems, distributed file systems, distributed databases, workflow systems, and multilevel caches. There are four main patterns: STRICT PROPAGATOR, STRICT PROPAGATOR WITH FAILURE, LAZY PROPAGATOR, and ADAPTIVE PROPAGATOR. In the strict propagation patterns, updates flow from the point of original change forward through the network. Dependent objects are immediately updated, unless failure occurs. In the lazy propagation pattern, an updated object merely sets its timestamp, without notifying any other object. Upon request, a dependent object makes itself current after requesting predecessor objects to bring themselves up-todate. The adaptive propagator separates propagation of out-of-date markers from the actual update. It supports a combination of strict, optim...
Peter H. Feiler, Walter F. Tichy