views:

64

answers:

2

Hi,

I am looking for recommendations on resources (both books and websites) on designing GUI applications. By designing I mean the technical design (when and how to use data binding, when should MVC/MVP be used, what functionality should go into the model, the view, the controller/presenter, how can different parts of the UI best be kept in sync ...), not the screen design of which button goes where or how the interaction with the user should take place.

Thanks, Thomas

+2  A: 

http://martinfowler.com/eaaDev/uiArchs.html

My interest is identifying common and useful patterns for application developers to use in rich-client development. I've seen various designs in project reviews and also various designs that have been written in a more permanent way. Inside these designs are the useful patterns, but describing them is often not easy. Take Model-View-Controller as an example. It's often referred to as a pattern, but I don't find it terribly useful to think of it as a pattern because it contains quite a few different ideas. Different people reading about MVC in different places take different ideas from it and describe these as 'MVC'. If this doesn't cause enough confusion you then get the effect of misunderstandings of MVC that develop through a system of Chinese whispers.

In this essay I want to explore a number of interesting architectures and describe my interpretation of their most interesting features. My hope is that this will provide a context for understanding the patterns that I describe.

The MYYN
+1  A: 

In the design patterns arena MVVM is your best bet I'd say.

Try reading this:

http://stackoverflow.com/questions/725171/mvvm-questions-viewmodel-view-relationship-and-validation

Also:

http://stackoverflow.com/questions/1876274/the-model-in-mvvm-business-object-or-something-else

http://stackoverflow.com/questions/1521331/what-makes-mvvm-uniquely-suited-to-wpf

http://stackoverflow.com/questions/926622/mvvm-icommand-alternative

http://stackoverflow.com/questions/823992/what-are-the-biggest-pain-points-with-the-viewmodel-pattern

My experience with MVVM in practice is that it's a bit like the blind man and the elephant. Everyone says it is slightly different, and different solutions called MVVM are going to look radically different because they will be warped by the performance requirements and structure of your application.

The origins of MVVM are often claimed to be WPF and Silverlight.

In my view MVVM is an improvement on MVC, but possibly well designed MVP will outdo it.

For the best performance in general use MVP but MVVM I would expect to result in code that is nearly as fast and far easier to read and change.

Depending on what your app does, using a model at all may be overkill.

EDIT

Added "in general" to "for the best performance"...

martinr
I guess what I am trying to say is: there is writing the fastest most memory efficient implementation as a goal; and there is warping the implementation towards easier management and maintenance through MVC, MVP, MVVM and similar; it depends what you are trying to achieve. In a commercial context, the additional super-structure can be very valuable.
martinr