MVC
https://en.wikipedia.org/wiki/Smalltalk
The MVC (Model View Controller) pattern enables developers to have multiple consistent views of the same underlying data. It's ideal for software development environments, where there are various views (e.g., entity-relation, dataflow, object model, etc.) of the same underlying specification.
The view manages the graphical and/or textual output to the portion of the bitmapped display that is allocated to its application.
The controller interprets the mouse and keyboard inputs from the user, commanding the model and/or the view to change as appropriate.
Finally, the model manages the behavior and data of the application domain, responds to requests for information about its state (usually from the view), and responds to instructions to change state (usually from the controller).