It is generally agreed amongst developers that a good clean separation between the visual elements of an application and the logic of an application is a good idea. To that end a number of patterns have emerged over the years:
and more recently:
- Model View View-Model - sometimes incorrectly referred to as Presentation Model; they are similar but not the same. The MV-VM pattern is more WPF centric.
Over the years I have formed my own ideas as to when, why and where to apply these patterns, and it has been hard going, and to be quite frank, I've been a little inconsistent and vague at times; but recently I have formed more concrete ideas about when, why and where - especially when working with XAML (e.g. WPF and Silverlight) - which I have written down for others to throw stones at, here it is:
In time I plan to add code to illustrate these patterns - as I seem them - to provide more fodder for stone throwing; but in the process hopefully we'll all learn something.
Enjoy! I would love you know what you think and why.