... a problem that can be used in many different situations. In addition, design patterns allow developers to communicate using well-known, well-understood names for software interactions. Know when to use a certain design pattern, and when not to. No design pattern is a 42 - the answer to life, the universe and everything. There are situations in which every design pattern easily becomes an antipattern.