-
Notifications
You must be signed in to change notification settings - Fork 514
Expand file tree
/
Copy pathdesign-patterns-revisited.html
More file actions
71 lines (68 loc) · 3.69 KB
/
design-patterns-revisited.html
File metadata and controls
71 lines (68 loc) · 3.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<title>Design Patterns Revisited · Game Programming Patterns</title>
<!-- Tell mobile browsers we're optimized for them and they don't need to crop
the viewport. -->
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="stylesheet" type="text/css" href="style.css" />
<link href="https://fonts.googleapis.com/css?family=Merriweather:400,400italic,700,700italic|Source+Code+Pro|Source+Sans+Pro:200,300,400,600,400italic,600italic|Rock+Salt" rel="stylesheet" type="text/css">
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-42804721-1', 'gameprogrammingpatterns.com');
ga('send', 'pageview');
</script>
<script src="jquery-3.6.0.min.js"></script>
<script src="script.js"></script>
</head>
<body id="top">
<div class="page sidebar">
<span class="theme-toggler" title="dark theme" onclick="toggleTheme()"></span>
<div class="content">
<nav class="top">
<span class="prev">← <a href="architecture-performance-and-games.html">Previous Chapter</a></span>
<span class="next"><a href="command.html">Next Chapter</a> →</span>
<span class="toc">≡ <a href="/">The Book</a></span>
</nav>
<h1>Design Patterns Revisited</h1>
<h1 class="book"><a href="/">Game Programming Patterns</a></h1>
<p><em>Design Patterns: Elements of Reusable Object-Oriented Software</em> is nearly
twenty years old by my watch. Unless you’re looking over my shoulder, there’s a
good chance <em>Design Patterns</em> will be old enough to drink by the time you read
this. For an industry as quickly moving as software, that’s practically ancient.
The enduring popularity of the book says something about how timeless design
is compared to many frameworks and methodologies.</p>
<p>While I think <em>Design Patterns</em> is still relevant, we’ve learned a lot in the
past couple of decades. In this section, we’ll walk through a handful of the
original patterns the Gang of Four documented. For each pattern, I hope to have
something useful or interesting to say.</p>
<p>I think some patterns are overused (<a href="singleton.html">Singleton</a>),
while others are underappreciated (<a href="command.html">Command</a>). A couple
are in here because I want to explore their relevance specifically to games (<a
href="flyweight.html">Flyweight</a> and <a href="observer.html">Observer</a>).
Finally, sometimes I just think it’s fun to see how patterns are enmeshed in
the larger field of programming (<a href="prototype.html">Prototype</a> and <a
href="state.html">State</a>).</p>
<h2><a href="#the-patterns" name="the-patterns">The Patterns</a></h2>
<ul>
<li><a href="command.html">Command</a></li>
<li><a href="flyweight.html">Flyweight</a></li>
<li><a href="observer.html">Observer</a></li>
<li><a href="prototype.html">Prototype</a></li>
<li><a href="singleton.html">Singleton</a></li>
<li><a href="state.html">State</a></li>
</ul>
<nav>
<span class="prev">← <a href="architecture-performance-and-games.html">Previous Chapter</a></span>
<span class="next"><a href="command.html">Next Chapter</a> →</span>
<span class="toc">≡ <a href="/">The Book</a></span>
</nav>
</div>
</div>
<footer>© 2009-2021 Robert Nystrom</footer>
</body>
</html>