I am biased differently because I maintain a interactive CAD/CAM software for cutting machine.
1) Passive View found here
By making the actual forms a thin shells that interact with a UI Controller layer through a series of interfaces we were able to plug a big hole in automated testing. Our Q&A folks used a series of checklists that filled a 1" thick binder. Now it is a few dozen pages mostly focused on any new features or changes we made since the last release.
We used to have our software run only one type of cutting machine. When I converted over to a 32-bit architecture around 2000. I knew that some day we were going to expand the range of machines we support. So I developed the Passive View design in order to allow me to radically alter the software to allow customized version suited for new machine. This finally paid off two years ago when we quadrupled the number of types of machines we sold.
I was able to make several new types of control software in very little time. Because all of the software use the same core set of DLL (the model) bug fixes are easy to make. The automated tests ensured that the additions we made (new screen types) didn't impact the other UIs we add.
2) The Command Pattern
This was the biggest thunderbolt that hit me after reading Design Pattern by the Gang of Four. Finally a sane and easy design to allow for unlimited undo and redo. A great design to clearly separate out each type of action you have to do in response to events generated by the system or a user.
3) The Visitor Pattern
I know that this pattern is not looked at favorably by many but when you have to do a complex series of operations to create a specific cutting path the visitor pattern is the way to go. You can make the parameter very complex have all kind of subroutines, (looking sheepishly) have a few global variable (for that class only). All of it is packaged in one area where it is clear why everything is there.
So create a round flange all I have to is instantiate the flange visitor. Fill out the dozen or so properties and pass it to the visit method of a CuttingPathList and the correct number of flanges just appears.