Co to jest zasada pojedynczej odpowiedzialności?
W programowaniu i projektowaniu komputerowym zasada pojedynczej odpowiedzialności jest koncepcją, która popiera pogląd, że każda klasa w programie powinna spełniać tylko jedną funkcję w większej aplikacji. Ten pomysł częściowo promuje niektóre ideały programowania obiektowego, takie jak enkapsulacja, ponieważ cała klasa będzie skupiona na wykonywaniu jednej odpowiedzialności i będzie w niewielkim stopniu polegać na klasach zewnętrznych. Jednocześnie jest nieco przeciwny niektórym koncepcjom wczesnego programowania obiektowego, ponieważ funkcja pojedynczego obiektu jest oddzielona od danych obsługiwanych przez obiekt, co oznacza, że wiele obiektów w połączeniu może wymagać zbudowania w celu utrzymania niektóre centralne dane. Zasada pojedynczej odpowiedzialności stanowi podstawę modelu modelu znanego jako projektowanie oparte na odpowiedzialności.
Przykładem zasady pojedynczej odpowiedzialności może być tradycyjna słuchawka telefoniczna. Niektóre zasady projektowania postrzegają słuchawkę jako pojedynczy obiekt, który obsługuje zarówno wejście z linii telefonicznej, jak i transmisję wyjścia z głośnika. W ramach modelu pojedynczej odpowiedzialności, w którym pojedynczy obiekt powinien ponosić tylko jedną odpowiedzialność, wówczas słuchawka składałaby się z kilku oddzielnych obiektów, z których każdy pełniłby jedną funkcję, na przykład tylko odbieranie danych z linii telefonicznej lub przesyłanie danych tylko przez słuchawka.
Jedną z zalet, które umożliwia stosowanie zasady pojedynczej odpowiedzialności, jest bardzo wysoki poziom abstrakcji i modułowości. W przykładzie słuchawki można zmienić wejście z linii telefonicznej lub sposób, w jaki sygnał jest wysyłany do użytkownika, bez wpływu na sąsiednie klasy, o ile przestrzegają one tej samej umowy o interfejsie. Ponadto, możliwość ponownego użycia niektórych elementów może być bardzo wysoka, ponieważ każda klasa jest całkowicie zamknięta w obudowie i bardzo mało, jeśli w ogóle, polega na otaczających obiektach, skupiając się zamiast tego na jednej odpowiedzialności.
Komplikacją, którą może stworzyć zasada pojedynczej odpowiedzialności, jest duża liczba klas i obiektów działających na tych samych danych. Może to oznaczać duże koszty ogólne i skomplikowany proces projektowania. Może to również utrudnić debugowanie dużego programu, ponieważ pojedyncza część programu może składać się z tysięcy plików małej klasy.
Gdy zasada pojedynczej odpowiedzialności jest stosowana poprzez projektowanie oparte na odpowiedzialności, dane i metody wykorzystywane do manipulowania danymi są rozdzielane do celów projektowych. Chociaż prowadzi to do pewnej swobody, enkapsulacji i modułowości w projektowaniu, może również generować szereg wzorców pośrednich i projektów, które należy wykorzystać w celu ułatwienia wielu klasom wszystkich prób interakcji z danymi jednocześnie. Z drugiej strony, jeśli dane obiektu i metody użyte do manipulowania nim wszystkie są powiązane w jeden obiekt wielozadaniowy, wówczas kod może być trudniejszy do zmodyfikowania w miarę skalowania, zmiany lub bardziej złożonego systemu.