An open API service indexing awesome lists of open source software.

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

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