Chapter 2. What Is a Pattern?

A pattern is a reusable solution that can be applied to commonly occurring problems in software design—in our case, in writing JavaScript web applications. Another way of looking at patterns is as templates for how we solve problems—ones that can be used in quite a few different situations.

So, why is it important to understand patterns and be familiar with them? Design patterns have three main benefits:

Patterns are proven solutions.

They provide solid approaches to solving issues in software development using proven techniques that reflect the experience and insights the developers that helped define them bring to the pattern.

Patterns can be easily reused.

A pattern usually reflects an out-of-the-box solution that can be adapted to suit our own needs. This feature makes them quite robust.

Patterns can be expressive.

When we look at a pattern, there’s generally a set structure and vocabulary to the solution presented that can help express rather large solutions quite elegantly.

Patterns are not exact solutions. It’s important that we remember the role of a pattern is merely to provide us with a solution scheme. Patterns don’t solve all design problems, nor do they replace good software designers, however, they do support them. Next, we’ll take a look at some of the other advantages patterns have to offer.

  • Reusing patterns assists in preventing minor issues that can cause major problems in the application development process. What this means is when code is built on proven patterns, we can afford to spend less time worrying about the structure of our code and more time focusing on the quality of our overall solution. This is because patterns can encourage us to code in a more structured and organized fashion, avoiding the need to refactor it for cleanliness purposes in the future.

  • Patterns can provide generalized solutions, documented in a fashion that doesn’t require them to be tied to a specific problem. This generalized approach means that, regardless of the application (and in many cases the programming language), we are working with, design patterns can be applied to improve the structure of our code.

  • Certain patterns can actually decrease the overall file-size footprint of our code by avoiding repetition. By encouraging developers to look more closely at their solutions for areas where instant reductions in repetition can be made—e.g., reducing the number of functions performing similar processes in favor of a single generalized function—the overall size of our codebase can be decreased. This is also known as making code more dry.

  • Patterns add to a developers vocabulary, which makes communication faster.

  • Patterns that are frequently used can be improved over time by harnessing the collective experiences other developers using those patterns contribute back to the design pattern community. In some cases, this leads to the creation of entirely new design patterns, while in others it can lead to the provision of improved guidelines on how specific patterns can be best used. This can ensure that pattern-based solutions continue to become more robust than ad hoc solutions may be.

Get Learning JavaScript Design Patterns now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.