Architectural Patterns

6 min. read

Architectural Patterns

Layered pattern
Presentation layer (also known as UI layer)
Application layer (also known as service layer)
Business logic layer (also known as domain layer)
Data access layer (also known as persistence layer)

Usage
General desktop applications.
E commerce web applications.

Client-server pattern
server and multiple clients

Master-slave pattern
master and slaves
Usage
In database replication, the master database is regarded as the authoritative source, and the slave databases are synchronized to it.
Peripherals connected to a bus in a computer system (master and slave drives).

Pipe-filter pattern
This pattern can be used to structure systems which produce and process a stream of data. Each processing step is enclosed within a filter component. Data to be processed is passed through pipes. These pipes can be used for buffering or for synchronization purposes.
Usage
Compilers. The consecutive filters perform lexical analysis, parsing, semantic analysis, and code generation.
Workflows in bioinformatics.

Broker pattern
This pattern is used to structure distributed systems with decoupled components. These components can interact with each other by remote service invocations. A broker component is responsible for the coordination of communication among components.

Servers publish their capabilities (services and characteristics) to a broker. Clients request a service from the broker, and the broker then redirects the client to a suitable service from its registry.

Usage
Message broker software such as Apache ActiveMQ, Apache Kafka, RabbitMQ and JBoss Messaging.

Peer-to-peer pattern
In this pattern, individual components are known as peers. Peers may function both as a client, requesting services from other peers, and as a server, providing services to other peers. A peer may act as a client or as a server or as both, and it can change its role dynamically with time.
Usage
File-sharing networks such as Gnutella and G2)
Multimedia protocols such as P2PTV and PDTP.

Event-bus pattern
This pattern primarily deals with events and has 4 major components
event source
event listener
Channel
event bus
Sources publish messages to particular channels on an event bus. Listeners subscribe to particular channels. Listeners are notified of messages that are published to a channel to which they have subscribed before.

Usage
Android development
Notification services

Model-view-controller pattern
This pattern, also known as MVC pattern, divides an interactive application in to 3 parts as,

model — contains the core functionality and data
view — displays the information to the user (more than one view may be defined)
controller — handles the input from the user
This is done to separate internal representations of information from the ways information is presented to, and accepted from, the user. It decouples components and allows efficient code reuse.

Usage
Architecture for World Wide Web applications in major programming languages.
Web frameworks such as Django and Rails.

Blackboard pattern
This pattern is useful for problems for which no deterministic solution strategies are known. The blackboard pattern consists of 3 main components.

blackboard — a structured global memory containing objects from the solution space
knowledge source — specialized modules with their own representation
control component — selects, configures and executes modules.
All the components have access to the blackboard. Components may produce new data objects that are added to the blackboard. Components look for particular kinds of data on the blackboard, and may find these by pattern matching with the existing knowledge source.

Usage
Speech recognition
Vehicle identification and tracking
Protein structure identification
Sonar signals interpretation.

Interpreter pattern
This pattern is used for designing a component that interprets programs written in a dedicated language. It mainly specifies how to evaluate lines of programs, known as sentences or expressions written in a particular language. The basic idea is to have a class for each symbol of the language.

Usage
Database query languages such as SQL.
Languages used to describe communication protocols.

References
https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-a0b47a1e9013
https://medium.com/@nvashanin/types-of-software-architects-aa03e359d192
https://en.wikipedia.org/wiki/Software_architect

Architectural-patterns

ADR

Active Record

Broker

Client-server

CBD

DAO

DTO

DDD

ECS

EDA

Front Controller

Identity Map

Interceptor

Implicit Invocation

Inversion of control

Model 2

MOM

Microservices

MVA (Model-View-Adapter)

MVC (Model-View-Controller)

MVP - Model-View-Presenter

MVVM - Model View Viewmodel

Monolithic

Multitier

Naked Object

ORB

P2P

Publish-subscribe

PAC

REST

SOA

Service Locator

SN

SBA

Specification

Method chaining

Type tunnel

Mock object

Mangler

Lazy loading

Intercepting filter

Composite entity

Business delegate

Serverless Computing

Action Domain Responder

Active Record Pattern

Blackboard System

Data Access Object

Data Transfer Object

Entity Component System

Front Controller

Identity map pattern

Interceptor Pattern

Interface-based Programming

Inversion of Control

LCHH Architecture

Multitier Architecture

Multiuse Model View

Publish Subscribe Pattern

Self-contained System

Service locator Pattern

Service-oriented architecture

Specification Pattern

Business Delegate

Software Design Patterns

Creational Patterns

Abstract factory
Builder
Dependency Injection
Factory method
Lazy initialization
Multiton
Object pool
Prototype
RAII
Singleton

Structural Patterns

Adapter
Bridge
Composite
Decorator
Delegation
Facade
Flyweight
Front controller
Marker interface
Module
Proxy
Twin

Behavioral Patterns

Blackboard
Chain of responsibility
Command
Interpreter
Iterator
Mediator
Memento
Null object
Observer
Servant
Specification
State
Strategy
Template method
Visitor

Functional Patterns

Closure
Currying
Function composition
Functor
Monad
Generator

Concurrency Patterns

Active object
Actor
Balking
Barrier
Binding properties
Coroutine
Compute kernel
Double-checked locking
Event-based asynchronous
Fiber
Futex
Futures and promises
Guarded suspension
Immutable object
Join
Lock
Messaging
Monitor
Nuclear
Proactor
Reactor
Read write lock
Scheduler
Thread pool
Thread-local storage

Cloud Distributed Patterns

Ambassador
Anti-Corruption Layer
Bulkhead
Cache-Aside
Circuit Breaker
CQRS
Compensating Transaction
Competing Consumers
Compute Resource Consolidation
Event Sourcing
External Configuration Store
Federated Identity
Gatekeeper
Index Table
Leader Election
MapReduce
Materialized View
Pipes
Filters
Priority Queue
Publisher-Subscriber
Queue-Based Load Leveling
Retry
Scheduler Agent Supervisor
Sharding
Sidecar
Strangler
Throttling
Valet Key

Twelve-Factor App Methodology

Codebase
Dependencies
Config
Backing services
Build, release, run
Processes
Port binding
Concurrency
Disposability
Dev/Prod parity
Logs
Admin Processes