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.
However, your question intrigued me a bit so i did a bit more digging and frankly…i couldnt 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 isnt part of the question but its related, i think)