https://github.com/vartzy/pattern-software-design
Software Design Pattern cheatsheet
https://github.com/vartzy/pattern-software-design
design-patterns software-engineering software-patterns
Last synced: 2 months ago
JSON representation
Software Design Pattern cheatsheet
- Host: GitHub
- URL: https://github.com/vartzy/pattern-software-design
- Owner: VArtzy
- Created: 2025-02-09T17:13:05.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-03-15T14:19:06.000Z (9 months ago)
- Last Synced: 2025-03-15T14:19:54.510Z (9 months ago)
- Topics: design-patterns, software-engineering, software-patterns
- Language: TypeScript
- Homepage:
- Size: 40 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Software Design Pattern Concept, Implementation and Exercise
There are **23 design patterns** in total (23 classic Design Patterns, although at least 26 Design Patterns have been discovered to date), categorized into three groups:
1. **[Practical Creational Patterns](https://github.com/VArtzy/pattern-software-design/tree/main/creational)**: 5 patterns
2. **[Practical Structural Patterns](https://github.com/VArtzy/pattern-software-design/tree/main/structural)**: 7 patterns
3. **[Practical Behavioral Patterns](https://github.com/VArtzy/pattern-software-design/tree/main/behavioral)**: 11 patterns
### **Creational Patterns**
These patterns provide various object creation mechanisms, which increase flexibility and reuse of existing code.
- **[Factory Method](https://github.com/VArtzy/pattern-software-design/tree/main/factory)**
- **[Abstract Factory](https://github.com/VArtzy/pattern-software-design/tree/main/abstract-factory)**
- **[Builder](https://github.com/VArtzy/pattern-software-design/tree/main/builder)**
- **[Prototype](https://github.com/VArtzy/pattern-software-design/tree/main/prototype)**
- **[Singleton](https://github.com/VArtzy/pattern-software-design/tree/main/singleton)**
---
### **Structural Patterns**
These patterns explain how to assemble objects and classes into larger structures while keeping these structures flexible and efficient.
- **[Adapter](https://github.com/VArtzy/pattern-software-design/tree/main/adapter)**
- **[Bridge](https://github.com/VArtzy/pattern-software-design/tree/main/bridge)**
- **[Composite](https://github.com/VArtzy/pattern-software-design/tree/main/composite)**
- **[Decorator](https://github.com/VArtzy/pattern-software-design/tree/main/decorator)**
- **[Facade](https://github.com/VArtzy/pattern-software-design/tree/main/facade)**
- **[Flyweight](https://github.com/VArtzy/pattern-software-design/tree/main/flyweight)**
- **[Proxy](https://github.com/VArtzy/pattern-software-design/tree/main/proxy)**
---
### **Behavioral Patterns**
These patterns are concerned with algorithms and the assignment of responsibilities between objects.
- **[Chain of Responsibility](https://github.com/VArtzy/pattern-software-design/tree/main/chain-of-responsibility)**
- **[Command](https://github.com/VArtzy/pattern-software-design/tree/main/command)**
- **[Iterator](https://github.com/VArtzy/pattern-software-design/tree/main/iterator)**
- **[Mediator](https://github.com/VArtzy/pattern-software-design/tree/main/mediator)**
- **[Memento](https://github.com/VArtzy/pattern-software-design/tree/main/memento)**
- **[Observer](https://github.com/VArtzy/pattern-software-design/tree/main/observer)** (Fun fact: PubSub pattern is distributed -- asynchronous and many-to-many version of observer)
- **[State](https://github.com/VArtzy/pattern-software-design/tree/main/state)**
- **[Strategy](https://github.com/VArtzy/pattern-software-design/tree/main/strategy)**
- **[Template Method](https://github.com/VArtzy/pattern-software-design/tree/main/template-method)**
- **[Visitor](https://github.com/VArtzy/pattern-software-design/tree/main/visitor)**
## **Reference**
- https://refactoring.guru/design-patterns
- https://www.youtube.com/playlist?list=PL-CtdCApEFH_yiziXrQeogYOJzCmD8XLM
- https://www.youtube.com/watch?v=tv-_1er1mWI
- https://www.dicoding.com/blog/design-pattern/
- https://www.linkedin.com/learning/node-js-design-patterns
- https://en.wikipedia.org/wiki/Software_design_pattern