• Fragility – Tendency to break in many places when 1 change is made • Immobility – An application contains parts that are useful to another system, but too risky to break out • Viscosity – Cases where the design of the software is hard to preserve. The hacky change is easier than the right change
object as a command and pass to an invoker object. The invoker object finds an object that can handle this command and passes it to that object. • Allows requests to be encapsulated as objects