What's the difference between Architectural Patterns and Architectural Styles?

An Architectural Pattern is a way of solving a recurring architectural problem. MVC, for instance, solves the problem of separating the UI from the model. Sensor-Controller-Actuator, is a pattern that will help you with the problem of actuating in face of several input senses.

An Architectural Style, on the other hand, is just a name given to a recurrent architectural design. Contrary to a pattern, it doesn't exist to "solve" a problem.

Pipe&filter doesn't solve any specific problem, it's just a way of organizing your code. Client/server, Main program & subroutine and Abstract Data Types / OO, the same.

Also, a single architecture can contain several architectural styles, and each architectural style can make use of several architectural patterns.


Frankly, I have always considered both these terms to be synonymous! And layman (relatively speaking) literature definitely treats them as such. Refer MSDN or Wikipedia

However, your question intrigued me a bit so I did a bit more digging and frankly...I couldn't find much except for a reference to A Practical Guide to Enterprise Architecture (The Coad Series), from which i quote:

An architectural style (Base et al. 1997) and an architectural pattern (Buschmann et al. 1996) are essentially synonymous.

Based on some more googling, this is what I think might be one possible way to differentiate the two:

  • An architectural style is a conceptual way of how the system will be created / will work.
  • An architectural pattern describes a solution for implementing a style at the level of subsystems or modules and their relationships.

How an architectural pattern will differ from a Design pattern i.e. Adapter, observer is basically by the level of Granularity at which they are applied (I know this isn't part of the question but it's related, I think...)


Architectural Style is abstract i.e. conceptual.

+---------------+--------------------------------------------------------+
|   Category    |                  Architecture styles                   |
+---------------+--------------------------------------------------------+
| Communication | SOA, ROA, Message Bus                                  |
| Deployment    | Client/Server                                          |
| Domain        | Domain Driven Design,Monolithic application            |
| Structure     | Component-Based, Object-Oriented, Layered, Plug-ins    |
+---------------+--------------------------------------------------------+

An Architectural Pattern is concrete i.e. implementation of an Architectural Style.

  • For example: 3-tier, N-tier, MVC, REST

A Design pattern is a general reusable solution to a commonly occurring problem in software design at architectural level.

  • For example: Factory, Singleton, Prototype.

Analogy: Temples architecture style for different religions:

enter image description here