In VisualWorks, a ValueModel is the reification of a variable. In other words, it is an object that acts like a variable (a FirstClassSlot). It holds a value, and you can read it and write it. A ValueModel differs from a variable in two ways. First, it is a "subject" in the ObserverPattern. This means that other objects can depend on it and be notified when it changes. Second, it defines an interface, not an implementation. One implementation is ValueHolder, which just stores the value and returns it, but other implementations are actually adapters to other ValueModels or store the value in an instance variable of some other object. An ApplicationModel is a kind of composite model that is made up of a set of ValueModels, SelectionInLists, and other more primitive models. This allows a model to match a view, which is more naturally an example of the CompositePattern. See ModelViewController. ---- ''This seems related to the WholeValuePattern. Comments?'' --------------------- ValueModel can also refer to a language in which everything is an immutable value.