Design Pattern
Design patterns are pre-made solutions to common software design problems.
They provide blueprints that you can customize for your specific needs.
Difference from Functions/Libraries:
Unlike off-the-shelf functions or libraries, you can't simply copy-paste a design pattern into your code.
Design patterns are conceptual solutions rather than specific lines of code.
Pattern vs Algorithm:
Algorithms are step-by-step procedures to achieve a specific goal.
Patterns are higher-level descriptions of solutions; they're more like blueprints than recipes.
Pattern Components:
Intent: Briefly describes the problem and solution.
Motivation: Further explains the problem and the solution the pattern offers.
Structure of Classes: Shows how different parts of the pattern relate to each other.
Code Example: Provides a practical illustration in a popular programming language.
Additional Pattern Details:
Some pattern catalogs include applicability, implementation steps, and relations with other patterns.
Design patterns vary in complexity, detail, and applicability across the system.
Analogy: Similar to road construction, where you can enhance safety at an intersection by either adding traffic lights or constructing a multi-level interchange.
Levels of Patterns:
Idioms: Basic and low-level patterns specific to a programming language.
Architectural Patterns: Universal and high-level patterns applicable across different languages. They can shape the architecture of an entire application.
Categorization by Intent:
Creational Patterns: Focus on object creation mechanisms to enhance flexibility and code reuse.
Structural Patterns: Describe how to organize objects and classes into larger structures, maintaining flexibility and efficiency.
Behavioral Patterns: Handle effective communication and delegation of responsibilities among objects.
Last updated