The Model View Control (MVC) pattern, which is borrowed from the Smalltalk language, is a very good way of decoupling the data, or the model, from the user interface, which typically acts as the both viewer to the data and the controller of the data. One could also imagine that one model will several different kinds of viewer or controller, e.g. one view might show the model as a chart and another might show it as a table.
This particular example exploits all of the parts of the MVC pattern. The role of the model is taken by the PrimeFactory class, which implements the WritableVectorModel. The role of the view is taken, in particular, by the ListView component. The role of the control is taken by the 'Restart' button.
The decoupling is accomplished by forcing the parts of the MVC pattern to only rely on interfaces. The view, ListView, only knows that if it gets the ITEM_ADDED event, which is dispatched by the model, PrimeFactory, then the view needs to update accordingly based on the new state of the WritableVectorModel implementation.