Hva er prinsippet om enkeltansvar?

I dataprogrammering og design er det enkelt ansvarsprinsippet et konsept som taler for synet om at enhver klasse i et program bare skal utføre en funksjon i den større applikasjonen. Denne ideen fremmer delvis noen av idealene om objektorientert programmering, for eksempel innkapsling, fordi en hel klasse vil være fokusert på å utføre et enkelt ansvar og vil ha liten avhengighet av utenfor klasser. Samtidig er det noe antitetisk for noen av konseptene til tidlig objektorientert programmering, fordi funksjonen til et enkelt objekt er koblet fra dataene som objektet håndterer, noe som betyr at mange objekter i kombinasjon kanskje må konstrueres for å opprettholde noen sentrale data. Det eneste ansvarsprinsippet er grunnlaget for en type designmodell kjent som ansvarsdrevet design.

Et eksempel på det enkeltansvarsprinsippet kan ha form av et tradisjonelt telefonhåndsett. Noen designprinsipper ville se håndsettet aS et enkelt objekt som håndterer både inngang fra telefonlinjen og overføring av utgang fra høyttaleren. Under en enkelt ansvarsmodell, der et enkelt objekt bare skal ha et enkelt ansvar, vil håndsettet bestå av flere separate objekter som hver utførte en enkelt funksjon, for eksempel å bare motta inngang fra telefonlinjen, eller bare sende ut dataene gjennom ørestykket.

En av fordelene som bruk av enkeltansvarsprinsippet muliggjør er et veldig høyt nivå av abstraksjon og modularitet. I håndsetteksemplet kan enten inngangen fra telefonlinjen eller måten signalet sendes ut til brukeren endres uten å påvirke naboklassene så lenge de holder seg til den samme kontrakten for grensesnitt. I tillegg kan gjenbrukbarheten til visse komponenter være veldig høy, fordi hver klasse er fullt innkapslet og er avhengig av VERy lite, om i det hele tatt, på omkringliggende gjenstander, fokuserer i stedet på dets ett ansvar.

En komplikasjon som det enkelt ansvarsprinsippet kan skape er en stor mengde klasser og objekter som alle opererer på de samme dataene. Dette kan bety en stor mengde overhead og en komplisert designprosess. Det kan også gjøre feilsøking av et stort program vanskelig, fordi en enkelt del av programmet kan bestå av tusenvis av små klassefiler.

Når det enkelt ansvarsprinsippet blir brukt gjennom en ansvarsdrevet design, skilles dataene og metodene som brukes til å manipulere dataene atskilt for designformål. Selv om dette fører til en viss frihet, innkapsling og modularitet i design, kan den også generere en rekke mellommønstre og design som må brukes til å lette en rekke klasser som alle prøver å samhandle med dataene samtidig. På den annen side, hvis et objekts data og metodene som brukes til å manipulere, er det hele bundet til å tømmehenne i et enkelt multisansvarlig objekt, da kan koden bli vanskeligere å endre som systemskala, endre eller bli mer kompleks.

ANDRE SPRÅK