Files
Main/5 Media/8 Courses/Design Patterns by Construx.md

99 lines
3.1 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Design Patterns by Construx
created_date: 2025-01-16
updated_date: 2025-01-16
aliases:
tags:
- course
type: course
course_name: Design Patterns
author: Construx
source: https://construx.vueocity.com/portal/design-patterns
status: not_started
---
# Design Patterns by Construx
- **🏷Tags** : #01-2025 #book
---
## Summary
> [!summary] Summary
> 3 Sentences only!
> - What are the main ideas?
> - If I implemented one idea from this book right now, which one would it be?
> - How would I describe the course to someone else?
---
## Ideas and Thoughts
> [!info]+ Inspiring Questions
> - Did you think about other concepts from other resources?
> - Do the concepts fit to your past, to your memories?
> - Can you relive them and reflect them from a different angle?
---
## Chapters
### Getting Started
> [!definition] UML Notation
> Contents
> [!Definition] What is a Design Pattern
> A standard solution to a recurring problem.
>
> We should not reinvent the wheel. Patterns are much more reusable than code.
A *bridge* is a design pattern because it is a standard solution to a recurring problem: we need to get things across a not passable obstacle.
For every problem you have *design criteria* to choose the best type of bridge (e.g. span, clearance, loads, cost, etc.). In design patterns design criteria are called *Goal forces* and *constraint forces*.
As a beginner: focus on the problem, not the solutions!
### UML Notations:
#### Note
![[Pasted image 20250116161217.png]]
#### Class, Attribute and Operation
![[Pasted image 20250116160836.png]]
Operations are viewed from extern
Methods are viewed from intern
### Minimize Overall Complexity
Measures of complexity
- Cyclomatic complexity: the number of decisions that are being made --> local complexity
- Depth of decision making: embedding of decision within decision and decision --> local complexity
- number of parameters: --> global complexity
- fan out: number of functions that are called by the function --> global complexity
![[Pasted image 20250116161534.png]]
Local complexity is a measure on how complicated each function is, whereas the global complexity is the complexity in between functions.
Remember to get an appropriate balance.
### Use Abstractions
**Syntax**: Is all about structure
**Semantics**: Is all about meaning
- Colorless green dreams sleep furiously: correct syntax, completely wrong semantics --> defective or buggy code, because it is semantically meaningless
The *compiler* is a master of syntax but cannot know anything about semantics.
The programmer needs to focus much more on semantics, because the complier will take care of the syntax.
> [!NOTE] Abstraction
> the principle of ignoring those aspects of a subject that are not relevant to the current purpose in order to concentrate solely on those that are.
>
> It is a tool to reduce and manage complexity.
what is the role of one function / subroutine? The more abstraction you have, the less performant the code becomes.
Abstraction i
---
## Exercises
---
```query
Design Patterns Construx
-file: "Design Patterns by Construx.md"
```