Analogies as Abstractions
Contents
Analogies are an effective way of communicating knowledge of one domain by mapping the domain’s concepts to another similar domain that is known by that person. In this way, a person can gain understanding of domain B through their existing knowledge of domain A.
There is, however, a possible third player in this scenario - an abstract concept through with domains A and B are related in the context of the analogy. We can view the two domains that the analogy connects as subclasses of an abstract parent class.
I thought this was a huge revelation, until I realized it’s also the foundation of books like the Gang of Four’s Design Patterns, and Fowler’s Analysis Patterns. Even if it’s not a new discovery, realizing that this concept was key in the derivation of those patterns makes it easy to see how it’s possible to derive new patterns every day to aid us both in Software Engineering and in everyday life.