Skip to content

Commit 8be1a12

Browse files
committed
Create 09-Design Patterns.md
1 parent a92c89b commit 8be1a12

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Design Patterns
2+
3+
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

Comments
 (0)