I have been a python programmer 7+ years now, and been designing with PyQt for 3+ years… But I am not a classically trained Comp Sci. major. More recently I have been learning Go and been actively following the Golang-nuts discussion list which is filled with extremely intelligent developers. From this discussion group, I have seen many references to software design patterns, such as Observer, Reactor, etc. Again because I am not a CS major, I never really learned all of this terminology and theory, but it made me wonder…
What design patterns do common GUI frameworks like Qt, wx, GTK exhibit?
I have a feeling like its a mixture of patterns for different components, such as the event loop vs signal/slots or binding vs Key-value observing, and so on. I would love to hear an explanation or generalization about how these software patterns map to the traditional components of these frameworks.
As a bit of a secondary element to this question: Are there GUI frameworks that try and take a completely different pattern approach to a GUI solution? Does Cocoa/objective-c use the same event loop patterns as these others?
Update
To help narrow down the focus of my question, and based on the answer by @HDDimon, I am mainly wondering about Behavior Patterns (communication):
http://en.wikipedia.org/wiki/Design_Patterns#Behavioral_patterns
Good day. I think the best answer you will find in Martin Fowler article GUI Architectures.
from this article:
According to this article, the best types of patterns for division between any kinds of components is Structural Patterns.
from “Design Patterns: Elements of Reusable Object-Oriented Software” by The “Gang of Four”: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. (I really want recommend you to read this awesome book)
But in any kind of frameworks you can see mix from several types of patterns: Creational patterns, Structural patterns, Behavioral patterns.
I had found a relational diagram between patterns from Design Patterns book, it may be helpful for everyday using.
UPD: Great SO answer added.