Classification of Patterns
This post is a cross-post from www.ModernesCpp.com .
In my last post, I presented the classification of design patterns based on the seminal book "Design Patterns: Elements of Reusable Object-Oriented Software" . Today, I present are more general classification of patterns based on the second seminal book "Pattern-Oriented Software Architecture, Volume 1 ".
You may have already noticed it. The classification in my last post, "Classification of Design Patterns " was about design patterns, but this post, "Classification of Patterns" is about patterns. This is intentional because the classification of "Pattern-Oriented Software Architecture, Volume 1 " (short POSA 1) is more general than the one of?"Design Patterns: Elements of Reusable Object-Oriented Software" . To make it short, today's classification includes the last one.
Pattern-Oriented Software Architecture, Volume 1
Here is the big picture of the patterns presented in POSA 1.
POSA 1 uses two ways of classification. It classifies the patterns based on their structural category and their problem category. Before I dive into the two classifications, let me write a few words about the patterns in the table, written in bold letters.
I will write about all patterns written in bold letters. The design patterns proxy, publish-subscriber, and counted pointer are particular. Proxy is already part of the book "Design Patterns: Elements of Reusable Object-Oriented Software" and publish-subscriber is quite similar to the observer pattern that is also part of the already mentioned book. Additionally, you should already know and use the counter pointer idiom. In C++11, we call it std::shared_ptr .
Structural Categories
Structural categorization is a categorization on their scale and abstraction:
Let me bring my thoughts about architectural patterns, design patterns, and idioms to the point:
Let's focus on the different problem categories.
Problem Categories
"Pattern-Oriented Software Architecture, Volume 1 " has ten different problem categories. I will present them and their patterns compactly before diving deeper into upcoming posts in a few of them.
From Mud to Structure
They provide a controlled decomposition of an overall system task into cooperating subsystems.
Distributed Systems
Build systems whose components are located in different processes or address spaces.
Interactive Systems
Build a system with human-computer interaction.
领英推荐
Adaptable Systems
Make an application extensible and adaptable to new requirements.
Structural Decomposition
They decompose systems into subsystems and complex components into suitably cooperating components.
Organization of Work
Cooperates several components to offer a complex service.
Access Control
Protects and controls access to services and components:
Management
Handle homogeneous sets of objects, services, and components in their entirety.
Communication
Organizes communication between components.
Resource Management
Help to manage shared components and objects.
?
What's next?
This post ends my introduction to patterns. In my next post, I present a pattern structure based on "Design Patterns: Elements of Reusable Object-Oriented Software" .
?
{loadmoduleid 153}