Skip to main content

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 kan trenge å konstrueres for å opprettholdeNoen sentrale data.Det eneste ansvarsprinsippet er grunnlaget for en type designmodell kjent som ansvarsdrevet design.

Et eksempel på prinsippet for enkeltansvar kan ta form av et tradisjonelt telefonhåndsett.Noen designprinsipper vil se håndsettet som et enkelt objekt som håndterer begge inngangene 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 inndata fra telefonlinjen, eller bare sende ut dataene gjennomØrestykket.

.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 veldig lite avhengigEn 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 brukes gjennom et ansvarsdrevet design, dataene og metodene som brukes til å manipulereDataene er 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 det hele, er bundet sammen i et enkelt multisansvarlig objekt, kan koden bli vanskeligere å endre som systemskala, endre eller bli mer kompleks.