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

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.

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