Building Reusable Software

Use the Strangler Pattern to build reusable software by enhancing existing behavior, creating better abstractions, and replacing code that is not quite right.  This is an effective method for eliminating technical debt and adhering to the Open/Closed Principle when your code is used by clients outside of your system.  Use an [Obsolete] attribute to generate compiler warnings notifying clients that a particular class will eventually be deprecated.

This pattern takes the name from a strangler vine, which crawls on the trunk of trees, killing the host tree.  Although the tree is dead, the shape of the tree remains, as the vine supports the tree, keeping it from falling over.