https://github.com/hoojinguyen/design-patterns
In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern isn't a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations.
https://github.com/hoojinguyen/design-patterns
design-patterns
Last synced: 2 months ago
JSON representation
In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern isn't a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations.
- Host: GitHub
- URL: https://github.com/hoojinguyen/design-patterns
- Owner: hoojinguyen
- Created: 2021-10-12T12:02:36.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2021-11-01T09:24:25.000Z (over 3 years ago)
- Last Synced: 2025-01-16T21:37:06.776Z (4 months ago)
- Topics: design-patterns
- Language: TypeScript
- Homepage:
- Size: 35.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# design-patterns
🚀 Introduction
In software engineering, a design pattern is a general repeatable solution to
a commonly occurring problem in software design. A design pattern isn't a
finished design that can be transformed directly into code. It is a
description or template for how to solve a problem that can be used in many
different situations.Types of Design Patterns
1. Creational: provide object creation mechanisms that increase flexibility and reuse of existing code.
- [Factory Method](https://refactoring.guru/design-patterns/factory-method 'Named link title')
- [Abstract Factory](https://refactoring.guru/design-patterns/abstract-factory 'Named link title')
- [Builder](https://refactoring.guru/design-patterns/builder 'Named link title')
- [Prototype](https://refactoring.guru/design-patterns/prototype 'Named link title')
- [Singleton](https://refactoring.guru/design-patterns/singleton 'Named link title')
2. Structural: explain how to assemble objects and classes into larger structures while keeping these structures flexible and efficient.
- [Adapter](https://refactoring.guru/design-patterns/adapter 'Named link title')
- [Bridge](https://refactoring.guru/design-patterns/ 'Named link title')
- [Composite](https://refactoring.guru/design-patterns/composite 'Named link title')
- [Decorator](https://refactoring.guru/design-patterns/decorator 'Named link title')
- [Facade](https://refactoring.guru/design-patterns/facade 'Named link title')
- [Flyweight](https://refactoring.guru/design-patterns/flyweight 'Named link title')
- [Proxy](https://refactoring.guru/design-patterns/proxy 'Named link title')
3. Behavioral: take care of effective communication and the assignment of responsibilities between objects.
- [Chain of Responsibility](https://refactoring.guru/design-patterns/chain-of-responsibility 'Named link title')
- [Command](https://refactoring.guru/design-patterns/command 'Named link title')
- [Iterator](https://refactoring.guru/design-patterns/iterator 'Named link title')
- [Mediator](https://refactoring.guru/design-patterns/mediator 'Named link title')
- [Memento](https://refactoring.guru/design-patterns/memento 'Named link title')
- [Observer](https://refactoring.guru/design-patterns/observer 'Named link title')
- [State](https://refactoring.guru/design-patterns/state 'Named link title')
- [Strategy](https://refactoring.guru/design-patterns/strategy 'Named link title')
- [Template Method](https://refactoring.guru/design-patterns/template-method 'Named link title')
- [Visitor](https://refactoring.guru/design-patterns/visitor 'Named link title')Reference
- https://refactoring.guru/design-patterns
- https://sourcemaking.com/design_patterns