Structural patterns define ways of structuring parts of the software system to compose other objects. Just as with behavioral patterns, there are class structural patterns and object structural patterns. Class structural patterns involve using inheritance as a mechanism to structurally compose new classes from another class or from a class hierarchy. The single-inheritance restriction of .NET means that our ability to use inheritance to compose new classes is restricted. For the most part, structural patterns are implemented as object structural patterns, which mean a class is declared as a container for one or more other classes.
Michael Feathers describes Legacy code as "…code without tests". Michael details many ways of managing and dealing with legacy code. The ideal strategy for dealing with legacy code is to make sure there are automated tests for the majority of the code. I say "majority" because the Paretto principle (also known as the 80-20 rule) and...