vault backup: 2025-01-16 16:38:07

This commit is contained in:
2025-01-16 16:38:07 +01:00
parent 7cfa1cf56a
commit 06cd2e242a
22 changed files with 246 additions and 169 deletions

View File

@@ -0,0 +1,98 @@
---
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"
```