Patterns might be thought of as Metaphors We Program By. Consider patterns like the FacadePattern: the dictionary meaning is
``The face or front of a building towards a street or other open place, esp. the principal front.''
We rely on the analogy to understand the pattern; with patterns, a good name is worth a thousand sentences, because it brings in a rich context of human intention and experience. They make software more tangible.
I think the richness of pattern metaphors gives them much of their power; the metaphors simplify program description, communication, and aid forward design. One of these days, I would like to explore this in detail.
References: MetaphorsWeLiveBy, LakoffAndJohnson, ConceptualMetaphor.
-- AamodSane
Good point, Aamod! I've often thought that the best patterns are the ones that incorporate metaphors that help you imagine their use. For instance, it's impossible to forget LeakyBucket? once it's been explained to you by Cope. I've found that in my own patterns writing that the patterns that come the easiest are the ones that come with a metaphor. For instance, see PaperPenAndPerson here on wikiwikiweb.
I am more interested in SystemMetaphors that communicate the overall architecture of the system. I've found that being explicit about the overall metaphor relieves much of the pressure to make design decisions too early. I believe we will have made a huge step forward when we have identified the EightSystemMetaphors. --KentBeck