Designprincipper Flashcards

1
Q

Hvad bruges SOLID principperne til?

A

bruges til at skabe struktureret, fleksibel og vedligeholdelsesvenlig objektorienteret software. reducere kobling, forbedre genbrug og gøre systemet lettere at udvide uden at påvirke eksisterende kode.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Single Responsibility Principle (SRP)

A

En klasse skal kun have én grund til at ændre sig – én ansvarlighed.

Motivation: Mindsker kobling og øger fleksibilitet.

Fordel: Nemmere vedligeholdelse og bedre testbarhed.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Open-Closed Principle (OCP)

A

Klasser bør være åbne for udvidelse, men lukkede for ændring.

Motivation: Gør det muligt at tilføje ny funktionalitet med minimal indvirkning på eksisterende kode.

Fordel: Mindsker risikoen for fejl.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Liskov Substitution Principle (LSP)

A

subclasses klasser skal kunne imitate deres superclasses uden at bryde funktionalitet.

Motivation: Sikrer konsistens i arv.

Fordel: Fremmer genbrug og stabilitet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Interface Segregation Principle (ISP)

A

Klienter skal ikke tvinges til at afhænge af metoder, de ikke bruger. Grupper i stedet metoder og brug flere seperate interfaces.

Motivation: Reducerer unødige afhængigheder.

Fordel: Fremmer modularitet og fleksibilitet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Dependency Inversion Principle (DIP)

A

Afhængigheder bør være baseret på abstraktioner frem for konkrete implementeringer.

‘peg på interfaces i stedet’

Motivation: Adskiller høj- og lavniveau-moduler.

Fordel: Øger fleksibilitet og testbarhed.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

inversion of control

A

spring har en indbygget ioc container, der kan inistianisere objekter automatisk vha. dependency injection. “dont call us, we call u”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

dependency injection

A

objekters afhængigheder ikke bliver skabt direkte i deres egne klasser, men i stedet leveret (injected) fra en ekstern kilde.
Spring opretter selv objekter
Objekterne får deres afhængigheder på oprettelsestidspunktet (typisk som parameter til konstruktøren) af en ekstern enhed.

-Opretter bean-instansen.
-Administrerer afhængigheder.
-Ødelægger bean’en, når applikationen lukker ned.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Dependency Inversion Principle(DIP)

A

Klasser på højt niveau, som implementerer kompleks logik, bør ikke påvirkes af ændringer i klassen på lavt niveau. I stedet bør klasser på højt niveau definere et interface som skal implementeres af klasser på lavere niveau.

Ses ved serviceklassen kun kender til interfacet, og ikke den konkrete implementering

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Interface seggregation principle (ISP)

A

Klienter bør ikke tvinges til at være afhængige af metoder i interfaces, som de ikke bruger. Grupper i stedet metoder og brug flere seperate interfaces.

ses ved vores små fokuserede interfaces

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Separation of Concerns (SoC)

A

hver part er ansvarlig for en separat bekymring, hvilket minimerer overlapningen af ​​bekymringer så meget som muligt.

MVC-mønsteret er en klassisk implementering af SoC,

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Hvad er DRY (Don’t Repeat Yourself)?

A

Kode skal ikke gentages unødigt.
Hver del af et system bør kun have én entydig implementering.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Hvad er KISS (Keep It Simple, Stupid)?

A

Systemer og kode skal holdes så simple som muligt.
Undgå unødig kompleksitet, da simpel kode er lettere at forstå og vedligeholde.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Hvad er Encapsulation?

A

Skjul objektets interne detaljer og eksponer kun det nødvendige via public metoder.
Fordel: Beskytter data og forhindrer utilsigtede ændringer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Hvad er High Cohesion, Low Coupling?

A

Høj kohæsion: Klasser/metoder skal kun håndtere én veldefineret opgave.
Lav kobling: Klasser bør have få afhængigheder for bedre fleksibilitet og testbarhed.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly