title: Which software design patterns do common GUI frameworks exhibit?
body: <p>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 <a href="http://golang.org" rel="noreferrer">Go</a> and been actively following the <a href="http://groups.google.com/group/golang-nuts/topics?pli=1" rel="noreferrer">Golang-nuts discussion list</a> 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... </p>
  
  <p><strong>What design patterns do common GUI frameworks like Qt, wx, GTK exhibit?</strong></p>
  
  <p>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. </p>
  
  <p>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?</p>
  
  <p><strong>Update</strong><br>
  To help narrow down the focus of my question, and based on the answer by @HDDimon, I am mainly wondering about Behavior Patterns (communication):<br>
  <a href="http://en.wikipedia.org/wiki/Design_Patterns#Behavioral_patterns" rel="noreferrer">http://en.wikipedia.org/wiki/Design_Patterns#Behavioral_patterns</a></p>