Confirmed users
596
edits
(Controller clarification) |
(Access) |
||
| Line 4: | Line 4: | ||
Definition: "MVC consists of three kinds of objects. The Model is the application object, the View is its screen presentation, and the Controller defines the way the user interface reacts to user input. [Other] user interface designs tended to lump these objects together. MVC decouples them to increase flexibility and reuse." – from [https://en.wikipedia.org/wiki/Design_Patterns "Design patterns" book by the "Gang of Four"] | Definition: "MVC consists of three kinds of objects. The Model is the application object, the View is its screen presentation, and the Controller defines the way the user interface reacts to user input. [Other] user interface designs tended to lump these objects together. MVC decouples them to increase flexibility and reuse." – from [https://en.wikipedia.org/wiki/Design_Patterns "Design patterns" book by the "Gang of Four"] | ||
* [[Thunderbird/NextGeneration/Storage|Storage]] | * [[Thunderbird/NextGeneration/Storage|Storage]] | ||
| Line 12: | Line 10: | ||
* [[Thunderbird/NextGeneration/View|View]] | * [[Thunderbird/NextGeneration/View|View]] | ||
== Controller == | |||
Terminology: In classic Smalltalk MVC, the JavaScript that handles user input and reacts to it is called "Controller" and the rest are part of the "View". Here, we will lump both together and call them both the "View". | |||
Note that the term "Controller" is sometimes mis-used for code that drives actions that were not initiated by the end user, but initiated by the application or outside input. According to [https://en.wikipedia.org/wiki/Design_Patterns Design patterns book], "the Controller defines the way the user interface reacts to user input". Thus, to avoid confusion, we will instead use the term "Services" for components that initiate non-user actions. This is in line with Mozilla terminology. | |||
== Access == | |||
Lower level tiers must never access higher level tiers. But rather, higher level tiers drive and call lower level tiers. | |||
Specifically, the model must never ever access the view, but the view access the model, and the view watches changes in the model by subscribing observers. | |||