Differences
This shows you the differences between two versions of the page.
| arch:beyound-gof [2026/08/29 07:53] – Bulk sync migration user | arch:beyound-gof [2026/08/29 07:59] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Beyond GoF: the most important design patterns after 30 years ====== | ||
| + | By Lyudmila Rezunik (lrezunik@edu.hse.ru) | ||
| + | |||
| + | ===== Introduction ===== | ||
| + | |||
| + | Gang of Four (GoF) design patterns are widely used as an instrument for fighting with reocurring software design problems. Being introduced in 1994 [1] they are still in use and there is no denying that they affected the software development industry. Before going to the topic of the essay, there is need to introduce the basic ideas behind the GoF patterns and why there were and still remain popular among developers. | ||
| + | |||
| + | The book published by so called Gang of Four (Erich Gamma, | ||
| + | |||
| + | However, nowadays the problem arising with overuse of such patterns becomes prominent. The next sections of the essay will cover the issues and why they appeared. There will also be made an introduction to modern patterns and the field of their use. | ||
| + | |||
| + | ===== From monolith to microservice ===== | ||
| + | |||
| + | Over the past 30 years since the design patterns by GoF were published, software development has evolved dramatically. Monolith architecture that was popular 30 years ago was replaced by the microservices, | ||
| + | |||
| + | In the next section are going to be describe some of the modern patterns classified by the type of their application. | ||
| + | |||
| + | ===== Modern design patterns ===== | ||
| + | |||
| + | Being developed in a context of object-oriented programming, | ||
| + | |||
| + | Talking about reactive programming [3], it is based on the idea of asynchronous event processing and data streams, and became popular in such areas as GUI programming, | ||
| + | |||
| + | As was mentioned in the previous section, microservices also influenced the relevance of GoF patterns. Some of the modern design patterns that appeared as a result are: **API Gateway Pattern** and **Circuit Breaker Pattern**. The first pattern is responsible for providing a single entry point for certain groups of microservices, | ||
| + | |||
| + | There are other areas of software development that evolved in 30 years, and where new design patterns were introduced. It is a long list, so I will mention only a couple more. | ||
| + | |||
| + | * **Message Broker Pattern** (it can also be considered an architectural pattern): | ||
| + | * **Back Pressure Pattern**: helps handling the flow of data in an asynchronous system by controlling the rate at which data is emitted [5]. | ||
| + | |||
| + | Besides all the patterns mentoned above, there are a lot more that we have not considered, which are applied in other areas: DevOps, testing, high-load systems, machine learning, etc. That shows that new patterns are introduced and shared between developers, that is caused by the domain, which is evolving. | ||
| + | |||
| + | ===== Conclusion ===== | ||
| + | |||
| + | Software development has seen a lot of growth in the past years, that is not even mentioning past decades. In this period new design patterns appeared, but it could not be said that they made the GoF patterns less important. | ||
| + | |||
| + | Moreover, although other programming styles are also getting popular (e.g. functional programming), | ||
| + | However, I need to mention that the overuse of this patterns or applying them incorrectly can lead to bad-smelling code. That fact was already studied and mentioned in some articles [6]. The advice here, I think, is to believe in KISS principle and to try distance yourself from premature optimization. | ||
| + | |||
| + | To conclude the essay, I would like to say that GoF patterns are still important to the industry and the ideas behind those patterns can influence some of the new ones. Above, in the previous section, a few modern patterns were described, but there are many more that were not mentioned. This confirms the fact that in the modern times developers need to learn more about design patterns: they should keep up with the new ones and also keep in mind those that were already established for a long time. | ||
| + | |||
| + | ===== References ===== | ||
| + | |||
| + | - Gamma, E., Helm, R., Johnson, R.,, Vlissides, J. M. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional. ISBN: 0201633612 | ||
| + | - Evans, E. (2004). Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley. | ||
| + | - M. Otta. What Is Reactive Programming? | ||
| + | - M. Fowler. CircuitBreaker, | ||
| + | - A. Govindaraj. Backpressure Pattern - Design Principle, 2023. Available: [[https:// | ||
| + | - Almadi SHS, Hooshyar D, Ahmad RB. Bad Smells of Gang of Four Design Patterns: A Decade Systematic Literature Review. Sustainability 13, no. 18: 10256. | ||