Is it possible to use more than one software architecture pattern in a single software? If so, how would this work?

softwareengineering.stackexchange https://softwareengineering.stackexchange.com/questions/412962

  •  14-03-2021
  •  | 
  •  

Question

I already know of various software design patterns, and I am familiar with MVC. However, now that I am learning about other patterns (repository, client-server, pipe, and layered), I got a bit confused about the implementation of these patterns.

Can there be a combination of patterns in a single software system? If so, how would this work?

Was it helpful?

Solution

Let's focus on the architectural patterns you mentioned (repository, client-server, pipe, layered).

A client-server system consists of programs or components which run on the client, and others which run on the server. Each of these components can have a layer structure internally. One of these layer may be a repository layer (for example, for decoupling other parts of the program from the database access code).

Both the client components as well as the server components may contain a "business logic layer". And for certain kinds of business logic, it makes sense for this layer to be structured internally by pipes and filters. For example, a 3D rendering engine on the client side can be structured by using a rendering pipeline. A system which does heavily asynchronous batch processing on the server side (for example, for filling / updating a data ware house every night) can have a batch processing pipeline.

So in short, different architectural patterns appear at different levels of abstraction. And in any larger real-world system one will usually find several of those patterns.

Licensed under: CC-BY-SA with attribution
scroll top