Skip to content

Commit 1321c21

Browse files
authored
Update README.md
1 parent d5f45d9 commit 1321c21

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

README.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,53 +17,89 @@ A tiny retro action RPG implementation made applying Software Design Patterns to
1717
## 🔊 Behavioral Patterns
1818
Define a concrete communication scheme between objects.
1919
* ### Bytecode
20+
Give a behavior the flexibility of data by encoding it as instructions for a virtual machine.
2021
* ### Chain of Responsibility
22+
Delegates commands to a chain of processing objects.
2123
* ### Command
24+
Creates objects that encapsulate actions and parameters.
2225
* ### Interpreter
26+
Implements a specialized language.
2327
* ### Iterator
28+
Accesses the elements of an object sequentially without exposing its underlying representation.
2429
* ### Mediator
30+
Allows loose coupling between classes by being the only class that has detailed knowledge of their methods.
2531
* ### Memento
32+
Provides the ability to restore an object to its previous state (undo).
2633
* ### Observer
34+
Is a publish/subscribe pattern, which allows a number of observer objects to see an event.
2735
* ### State
36+
Allows an object to alter its behavior when its internal state changes.
2837
* ### Strategy
38+
Allows one of a family of algorithms to be selected on-the-fly at runtime.
2939
* ### Subclass Sandbox
40+
Defines the behavior in a subclass using a set of operations provided by its base class.
3041
* ### Template Method
42+
Defines the skeleton of an algorithm as an abstract class, allowing its subclasses to provide concrete behavior.
3143
* ### Type Object
44+
Allows a flexible creation of new “classes” by creating a single class, each instance of which represents a different type of object.
3245
* ### Visitor
46+
Separates an algorithm from an object structure by moving the hierarchy of methods into one object.
3347

3448
## 🐣 Creational Patterns
3549
Create objects, rather than instantiating them directly.
3650
* ### Abstract Factory
51+
Groups object factories that have a common theme.
3752
* ### Builder
53+
Constructs complex objects by separating construction and representation.
3854
* ### Factory Method
55+
Creates objects without specifying the exact class to create.
3956
* ### Prototype
57+
Creates objects by cloning an existing object.
4058
* ### Singleton
59+
Restricts object creation for a class to only one instance.
4160

4261
## ✂️ Decoupling Patterns
4362
Split dependencies to ensure that changing a piece of code doesn't require changing another one.
4463
* ### Component
64+
Allows a single entity to span multiple domains without coupling the domains to each other.
4565
* ### Event Queue
66+
Decouples when an event is sent and when it is executed.
4667
* ### Service Locator
68+
Provides global access to services without being attached to the concrete class.
4769

4870
## 🛠️ Optimization Patterns
4971
Speed up the game by pushing the hardware to the furthest.
5072
* ### Data Locality
73+
Accelerates memory access by arranging data to take advantage of CPU caching.
5174
* ### Dirty Flag
75+
Avoids unnecessary work by deferring it until the result is needed.
5276
* ### Object Pool
77+
Allows the recycling of objects and optimizes performance and memory.
5378
* ### Spatial Partition
79+
Locates objects efficiently by storing them in a data structure organized by their positions.
5480

5581
## ⏰ Sequencing Patterns
5682
Invent time and craft the gears that drive the game's great clock.
5783
* ### Double Buffer
84+
Causes a series of sequential operations to appear instantaneous or simultaneous.
5885
* ### Game Loop
86+
Decouples the progression of game time from user input and processor speed.
5987
* ### Update Method
88+
Simulates a collection of independent objects by telling each to process one frame of behavior at a time.
6089

6190
## 🧬 Structural Patterns
6291
Use inheritance to compose interfaces and define ways to compose objects to obtain new functionality.
6392
* ### Adapter
93+
Allows classes with incompatible interfaces to work together by wrapping its own interface around that of an already existing class.
6494
* ### Bridge
95+
Decouples an abstraction from its implementation so that the two can vary independently.
6596
* ### Composite
97+
Composes zero-or-more similar objects so that they can be manipulated as one object.
6698
* ### Decorator
99+
Dynamically adds/overrides behavior in an existing method of an object.
67100
* ### Facade
101+
Provides a simplified interface to a large body of code.
68102
* ### Flyweight
103+
Reduces the cost of creating and manipulating a large number of similar objects.
69104
* ### Proxy
105+
Provides a placeholder for another object to control access, reduce cost, and reduce complexity.

0 commit comments

Comments
 (0)