I frequently see the question: What are architectural patterns, styles, and designs? These terms are often not clear, and different people give them different meanings.
[ Check out Red Hat's Portfolio Architecture Center for a wide variety of reference architectures you can use. ]
Below, I'll try to define them a bit more precisely.
This is the highest level of abstraction. In broad strokes, architectural designs instruct us on how to structure our code. The highest level of granularity describes the application's layers and high-level modules and how they relate to and interact with one another. Some examples of architectural styles are monolith, layered, event-driven, and self-contained systems.
These patterns represent a way to implement an architectural style, in the sense that we can do this regularly. Some examples are how to separate the user interface (UI) and data, how internal modules will interact with each other, and what layers we will use. Patterns answer these types of questions. They usually have an impact on the code base, in terms of how to structure the code inside. Some architectural pattern examples are model-view-presenter (MVP), model-view-controller (MVC), Model–view–viewmodel (MVVM), and microkernel.
[ Learn more about validated patterns. ]
These are different from architectural patterns in that they are more focused on a smaller area of the code base and have a smaller influence (focus on a local problem). These might include limiting the creation of a class to only one object (singleton pattern) or notifying all dependent objects when the internal state of an object is changed (observer pattern). Some examples include singleton, strategy, and factory-design patterns.
Because this is such a popular topic among enterprise architects, Enable Architect published many articles in 2022 on architectural patterns, styles, and designs. If you'd like to learn more about applying these methods in your own enterprise architecture, read the following 15 articles to satisfy your curiosity.
Do you have knowledge to share about enterprise architecture design? If so, consider writing about it for Enable Architect. Join our community and share your insight to help others on their architecture journey.