Software typically outlives hardware, so over the course of a program’s life it may be used on a tremendous range of target platforms. The goal is to obtain a design that works well on the original target platform, but at the same time is flexible enough to adapt to different classes of hardware.
—Tim Mattson, et. al.1
Design patterns were introduced in the 1990s to “describe simple and elegant solutions to specific problems in object-oriented ...