= Solution
In the <Observer pattern>, an observable subject keeps registered observers behind a shared <object interface>. After a relevant update, the subject calls that <object interface> on each observer. Observers can register and unregister independently, and the subject needs no knowledge of their concrete <software classes>.
For this <model-view-controller> application, `DataList` is the subject, while graph views are observers. After a successful insertion, a notification tells each registered view to redraw from the updated model. An invalid insertion leaves the model unchanged and needs no change notification. Calling observers only after restoring the <representation invariant> prevents views from seeing a half-completed insertion. Hence
$$
\boxed{\text{one coherent model change can refresh several independently registered views}.}
$$
Back to article page