Skip to main content

Vad är principen om enskilt ansvar?

I datorprogrammering och design är principen om enskilt ansvar ett koncept som stöder uppfattningen att alla klasser i ett program endast ska utföra en funktion i den större applikationen.Denna idé främjar delvis några av idealen för objektorienterad programmering, till exempel inkapsling, eftersom en hel klass kommer att fokuseras på att utföra ett enda ansvar och kommer att ha lite beroende av externa klasser.Samtidigt är det något antetetiskt för några av begreppen för tidig objektorienterad programmering, eftersom funktionen för ett enda objekt frikopplas från de data som objektet hanterar, vilket innebär att många objekt i kombination kan behöva konstrueras för att upprätthållaVissa centrala data.Principen för enskilt ansvar är grunden för en typ av designmodell som kallas ansvarsdriven design.

Ett exempel på principen om enskilt ansvar kan ta formen av en traditionell telefonhandenhet.Vissa designprinciper skulle se handenheten som ett enda objekt som hanterar både inmatning från telefonlinjen och överföringen av utgången från högtalaren.Enligt en enda ansvarsmodell, där ett enda objekt endast skulle ha ett enda ansvar, skulle handenheten bestå av flera separata objekt som var och en utförde en enda funktion, till exempel att bara få inmatning från telefonlinjen, eller bara utföra data igenomEarpiece.

En av fördelarna med att använda principen om enskilt ansvar möjliggör är en mycket hög abstraktion och modularitet.I handenhetsexemplet kan antingen ingången från telefonlinjen eller hur signalen matas ut till användaren ändras utan att påverka grannklasserna så länge de följer samma kontrakt för gränssnitt.Dessutom kan återanvändbarheten för vissa komponenter vara mycket hög, eftersom varje klass är helt inkapslad och förlitar sig mycket lite, om alls, på omgivande föremål, i stället fokuserar på sitt enda ansvar.

En komplikation som den enda ansvarsprincipen kan skapa ärEn stor mängd klasser och objekt som alla arbetar med samma data.Detta kan innebära en stor mängd omkostnader och en komplicerad designprocess.Det kan också göra felsökning ett stort program svårt, eftersom en enda del av programmet kan bestå av tusentals små klassfiler.

När principen om enskilt ansvar tillämpas genom en ansvarsdriven design, data och metoder som används för att manipuleraUppgifterna separeras för designändamål.Även om detta leder till en viss frihet, inkapsling och modularitet i designen, kan det också generera ett antal mellanliggande mönster och mönster som måste användas för att underlätta ett antal klasser som alla försöker interagera med data på en gång.Å andra sidan, om ett objekts data och metoderna som används för att manipulera allt är bundna i ett enda multisvarobjekt, kan koden bli svårare att ändra som systemskala, ändra eller bli mer komplexa.