There are a few ways to handle updating observable values when multiple user-interface components (e.g. grids) show the simple or native data. The first way is a flyweight pattern. A flyweight is an object that minimizes memory use by sharing as much data as possible with other similar objects; it is a way to use objects in large numbers when a simple repeated representation uses an unacceptable amount of memory. Often some parts of the object state can be shared and it's common to put them in external data structures and pass them to the flyweight objects temporarily when they are used. The second way is an observer pattern. An object called the subject maintains a list of its dependents called observers. The object notifies observers automatically of any state changes, usually by calling one of their methods. The observer is a key part in the MVC (Model-View-Controller) pattern. The third way is an observable wrapper. The observable wrapper combines the first and second ways. By wrapping a native object in an observable container that exposes getters and setters according to Java Beans standards, changes of the native type may be observed. But, the third way is a rather expensive way.