Skip to content

SOLID

SOLID (Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion)

  • SRP (Single Responsibility Principle), en klasse bør kun have et ansvar og en grund til at ændre sig.
  • OCP (Open/Closed Principle), en klasse skal være åben for udvidelse, men lukket for en ændring.
  • LSP (Liskov Substitution Principle), en subklasse skal kunne erstatte dens superklasse uden at ødelægge funktionaliteten.
  • ISP (Interface Segregation Principle), en klient skal ikke afhænge af metoder, som den ikke bruger.
  • DIP (Dependency Inversion Principle), en høj-niveau klasse skal ikke afhænge af en lav-niveau klasse, men af abstraktioner. Klasser og derived klasser må helst ikke være afhængige af konkrete klasser.

Læs mere om SOLID

  • SRP: Klasser osv. Har kun en opgave
  • Open/closed: klasser er åben for nedarvning og udvidelse, men lukket for ændring/modifikation af selve klassen. Der skal bruges abstract i C#.

S – Single responsibility principle (SRP)

  • Klasser skal kun have et ansvar

O – Open/closed principle (OCP)

  • Klasser skal laves så de er open for extension og closed for modification

L – Liskov Substitution principle (LSP)

  • Når man refererer til en child class via en parent class. F.eks. bruger vi en property af typen BaseViewModel til at refererer til de andre viewmodels. Det kan vi fordi de andre viewmodels er child classes af BaseViewModel (altså de nedarver fra BaseViewModel).

I – Interface segregation Principle (ISP)

  • En slags SRP for interfaces.  Handler om at interfaces skal have et ”ansvar”. Altså vi er ligeglade med metoder som ikke er relevante til de formål vi vil bruge den til. ISP er med til at aikre at man ikke ender med at implementerer et interface med flere metoder end man har brug for, så der bare ligger tomme metoder i ens klasser.

D – Dependency inversion principle (DIP)

  • Klasser skal helst ikke være afhængige af andre konkrete klasser, men i stedet bruge abstrakte klasser og/eller interfaces