Is the Model-View-Controller pattern very strictly defined, to it's design details? Or is it a term, like many others, with lots of different interpretations and versions (that all fit the definition)?
I have come across many 'versions' and interpretations of the MVC term. For example: Some versions state that using the Observer pattern, the View registers as an observer to the Model. Through this the View gets updates from the Model when it changes, and can update itself. Other versions claim that the View must never interact with the Model in any way.
The first version is from the Head First Design Patterns book. The second version I read here on Programmers. Two contradicting interpretation of the specific design-details of the MVC. And there are more examples.
My question is: Is the definition for the MVC pattern one of these terms that are interpreted in a variety of ways, which are all acceptable?
I am not talking about the higher-view definition of the pattern. This has a pretty clear definition.
I am talking about more specific details of design. Examples: Should Observer be used to update the View about changes of the Model? Should orders to the View to update be passed to it only through the Controller, or may be told to it by the Model directly? Things like these.
Do MVC versions vary in these details, but all still fit the MVC definition? Or is it simply that there are lots of 'wrong' MVC implementations?