When we looked at the Open / Closed principle, we saw that certain practices produced fragile code. Static Methods Non-virtual methods Creating objects Too-specific variable declarations Hard-coded values Using the wrong object (the Law of Demeter) Of these, the first three are all things you can't override. If you can't override things, they're inflexible and, inevitably, will cause problems. In the cases we've seen, the Law of Demeter problem could be solved just by using the right object in the first place. Equally, a non-virtual method is easy to fix, you just make it...