search

Open Closed Principle

Følgende indlæg er en del af en en række posts som beskriver S.O.L.I.D. principperne.

Open Closed Principle

Du kender det måske - en nødvendig ændring trigger andre ændringer og før du har set dig om har et hav af klasser ændret sig og du er nødt til at genteste og re-deploye store dele af din applikation. Sådanne ændringer koster dyrt og indebærer en større risiko end hvis du kunne nøjes med at tilføje en enkelt eller to klasser med tilhørende unit tests.

Så derfor, Open Closed Principle er vigtigt at forstå, når man skal udvikle systemer, som er bæredygtige ud over de første få måneder.

Princippet siger i al sin enkelhed at [1]:

Enhver komponent bør være åben for udvidelse, men lukket for ændringer

Problem

Antag du har programmeret en løsning til håndteringen af biblioteksbøger. Den hurtigt sammenkastede løsning ser simplificeret ud som:

Udenanvendelseafocp

Uden anvendelse af OCP

Problemet er at Library klassen i sin implementation af f.eks. ListContents hænger direkte på Book klassen og derfor ikke kan siges at være åben for udvidelser uden samtidig også at skulle ændres.

Løsning

Vi kan reparere på situationen ved at indføre et ILibraryContent interface så Library refererer denne istedet og lade Book implementere interfacet. På den måde kan vi indføre nye former for ILibraryContent, f.eks. DVD's og Games uden at skulle ændre i Library klassens eksisterende metoder.

Ocpviastrategyanvendelse

OCP via Strategy anvendelse

Dette er basalt set en anvendelse af Strategy design pattern'et.

Der er også andre måder at opnå denne form for modularitet, f.eks. via Dependency Injection (se f.eks. [2]) eller via anvendelsen af Template.

Referencer

[1] “Agile, Principles, Patterns and Practices in C#”, Martin/Martin

[2] http://en.wikipedia.org/wiki/Dependency_injection

STRONGMINDS 

STRONGMINDS er et software-udviklingshus i vækst. Vi har solid erfaring med cloududvikling og integration af forretningssystemer og andet udstyr. Vi laver solidt software-håndværk, der giver værdi til din forretning, og du er altid velkommen til at kontakte os, så vi kan drøfte dine muligheder. 

Kontakt Icon Kontakt

STRONGMINDS 

INCUBA - Katrinebjerg

Åbogade 15 

DK - 8200 Aarhus N

 

T: (+45) 7026 6416

E: info@strongminds.dk

ERFA-gruppe for software-udviklingschefer

STRONGMINDS After Work er en ERFA-gruppe for softwareudviklingschefer i Østjylland med en LinkedIn-gruppe og relevante gå-hjem-møder, der kan skabe samarbejde, dialog og relationer. Sammen vil vi løfte og udvikle niveauet og miljøet for softwareudvikling som profession. Er det noget for dig, så kontakt os gerne.