You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Design Patterns can be seen as repeatable solutions to common problems arising in software design. They provide a great, language-agnostic
4
+
way of talking about software architecture.
5
+
6
+
"Head First Design Patterns" explains simply:
7
+
8
+
> Design patterns don't go directly into your code, they first go into your BRAIN. Once you've loaded your brain with good working
9
+
knowledge of patterns you can start to apply them to your new designs
10
+
11
+
There are a number of benefits to considering using a design pattern:
12
+
13
+
- Helps your system prepare for accommodating change - an inevitability of software development
14
+
- Allows for a shared language when describing a system - you can "say more with less"
15
+
- Can lead to a better designed system (through *appropriate use* of a design pattern)
16
+
17
+
There are 23 'Gang of Four' patterns that are generally considered the foundation for all other patterns. They are categorised into three groups: Creational, Structural and Behavioural.
18
+
19
+
## Criticisms
20
+
21
+
[SourceMaking](https://sourcemaking.com/design_patterns) highlights some of the criticisms of using design patterns:
22
+
23
+
- Targets the wrong problem
24
+
- Lacks formal foundations
25
+
- Leads to inefficient solutions
26
+
- Does not differ significantly from other abstractions
27
+
28
+
29
+
Some argue that design patterns ultimately boil down to good software design with careful consideration of SOLID principles.
30
+
[Jeff Atwood also has some thoughts on design patterns](http://blog.codinghorror.com/rethinking-design-patterns/)
0 commit comments