Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/erfidev/design_patterns

design patterns in go programming language
https://github.com/erfidev/design_patterns

design-patterns golang

Last synced: about 5 hours ago
JSON representation

design patterns in go programming language

Awesome Lists containing this project

README

        

# Software design patterns

---

In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. Rather, it is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.

## Practice

---

Design patterns can speed up the development process by providing tested, proven development paradigms. Effective software design requires considering issues that may not become visible until later in the implementation. Freshly written code can often have hidden subtle issues that take time to be detected, issues that sometimes can cause major problems down the road. Reusing design patterns helps to prevent such subtle issues, and it also improves code readability for coders and architects who are familiar with the patterns.

## Classification and list

---

Design patterns had originally been categorized into 3 sub-classifications based on what kind of problem they solve.

#### Creational patterns:

These patterns provide various object creation mechanisms, which increase flexibility and reuse of existing code.

#### Structural patterns:

These patterns explain how to assemble objects and classes into larger structures while keeping these structures flexible and efficient.

#### Behavioral patterns:

These patterns are concerned with algorithms and the assignment of responsibilities between objects.

## Maintainer:

by Erfan hanifezade