Skip to main content

Hvad er det eneste ansvarsprincip?

I computerprogrammering og design er det eneste ansvarsprincip et koncept, der fremfører synspunktet om, at enhver klasse i et program kun skal udføre en funktion i den større applikation.Denne idé fremmer delvis nogle af idealerne til objektorienteret programmering, såsom indkapsling, fordi en hel klasse vil være fokuseret på at udføre et enkelt ansvar og vil have lidt afhængighed af eksterne klasser.På samme tid er det noget antithetisk for nogle af begreberne med tidlig objektorienteret programmering, fordi funktionen af et enkelt objekt afkobles fra de data, som objektet håndterer, hvilket betyder, at mange objekter i kombination muligvis skal konstrueres for at vedligeholdeNogle centrale data.Princippet om enkelt ansvar er grundlaget for en type designmodel kendt som ansvarsdrevet design.

Et eksempel på det eneste ansvarsprincip kan have form af et traditionelt telefonhåndsæt.Nogle designprincipper ville se håndsættet som et enkelt objekt, der håndterer både input fra telefonlinjen og transmission af output fra højttaleren.Under en enkelt ansvarsmodel, hvor et enkelt objekt kun skulle have et enkelt ansvar, vil håndsættet bestå af flere separate objekter, som hver udførte en enkelt funktion, såsom kun at modtage input fra telefonlinjen, eller kun udsende dataene igennemørestykket.

En af de fordele, som det er muligt at bruge princippet om enkelt ansvar, er et meget højt abstraktionsniveau og modularitet.I håndsæteksemplet kan enten input fra telefonlinjen eller den måde, signalet udsendes til brugeren, ændres uden at påvirke de nærliggende klasser, så længe de overholder den samme kontrakt til grænseflade.Derudover kan genanvendeligheden af visse komponenter være meget høj, fordi hver klasse er fuldt indkapslet og er meget lidt afhængig af, hvis overhovedet, på de omkringliggende genstande, der i stedet fokuserer på dets ene ansvar.

En komplikation, som det eneste ansvarsprincip kan skabe, erEn stor mængde klasser og objekter, som alle opererer på de samme data.Dette kan betyde en stor mængde overhead og en kompliceret designproces.Det kan også gøre fejlfinding af et stort program vanskeligt, fordi en enkelt del af programmet kan bestå af tusinder af små klassefiler.

Når det eneste ansvarsprincip anvendes gennem et ansvarsdrevet design, dataene og metoderne, der bruges til at manipulereDataene er adskilt til designformål.Selvom dette fører til en vis frihed, indkapsling og modularitet i design, kan det også generere et antal mellemmønstre og design, der skal bruges til at lette en række klasser, der alle forsøger at interagere med dataene på én gang.På den anden side, hvis et objekts data og de metoder, der bruges til at manipulere det, er bundet sammen i et enkelt multi-responsibilitetsobjekt, kan koden blive sværere at ændre som systemskala, ændre eller blive mere kompliceret.