Software Design Patterns: Principles and Implementation
Software Design Patterns and Architecture (CSC3324)
Defining Software Design Patterns
A reusable solution to a recurring design problem.
It reuses abstract knowledge about problems and solutions.
Independent of specific implementations, it acts as a template.
It utilizes Object-Oriented Programming (OOP) features such as inheritance and polymorphism.
The Christopher Alexander Definition
“Each pattern describes a problem which occurs over and over again... and then describes the core of the solution... you can use this solution a million times over without doing it the same way twice.”
Architecture vs. Design Patterns
| Aspect | Architecture | Design Patterns |
|---|---|---|
| Level | High-level | Lower-level (Micro-architecture) |
| Purpose | Structure of the whole application | Solve subproblems |
English with a size of 4.92 KB