3.5 KiB
title |
---|
Design Patterns |
Design Patterns
Programmers and software architects use design patterns to solve common, recurring problems in software architecture. The patterns provide a language-agnostic approach to object-oriented programming that helps developers follow principles of good application design.
Why Design Patterns?
Developing by design patterns offer several advantages:
- It's easier to follow good programming principles such as the SOLID principles.
- It keeps code chunks smaller so code is easier to test and debug
- It helps keep code loosely coupled so code is easier to re-use and update for new applications
- It makes code easier to understand, so new contributors can ramp up quickly
Using design patterns incurs some trade-offs, and developers new to the practice should remember the following:
- There are no silver bullets in programming, and design patterns are not an exception
- Design patterns add a layer of abstraction to code which increases initial design and development effort
- Over-use of design patterns or forcing them to fit makes code harder to understand
Language Support
Design patterns originated from the world of statically-typed languages like C++, Java, and C#. Most resources about development by design pattern are based in one of these languages.
Nonetheless, design patterns are just that: patterns. They are not implementations, like classes or interfaces, and are not constrained to any one language.
When learning design patterns within a dynamic language, if particular patterns seem needlessly complex or counter-intuitive, recall their origins. Developers in dynamic languages can still use and benefit from following design patterns, although more research may be required to fully understand them.
Uses
Design patterns are excellent at solving foundational coding problems in a simple and repeatable fashion. Broadly, they fall into three categories:
- Creational patterns describe how to create new objects
- Structural patterns describe how to compose objects out of other objects
- Behavioral patterns describe how objects communicate with each other
These tasks can all be performed without design patterns, but design patterns reduce the risk that you will violate good practices and create code that is hard to maintain.
More Information:
- Kamran Ahmed's Design Patterns for Humans is an excellent introduction to the specific patterns
- Design Patterns is the book that started this practice
- Martin Fowler's Patterns of Enterprise Application Architecture provide a suite of more sophisticated patterns for enterprise applications
- Sourcemaking provides an online resource with additional examples and information about design patterns