Vad är en kedja av ansvar?
Ansvarskedjan (ReK) involverar processen att indikera aktiviteter och ansvar för varje enhet i det objektorienterade designmönstret. Det finns två grundelement i en objektorienterad design; kommandobjekt och bearbetningsobjekt. Kommandobjekten genererar kommandona till behandlingsobjekten och behandlingsobjekten väljer bland kommandona som de kan hantera och överlämna resten till de andra i kedjan. Detta är den grundläggande principen i objektorienterad design, och det finns mycket mer flexibilitet i designen, till exempel den nya kapslingen av objekten på vilken plats som helst i designmönstret för ansvarskedjan.
Fördelen bakom den objektorienterade designen är att kommunikationen inte är begränsad till avsändaren och mottagaren eftersom det finns många objekt där för att hantera avsändarens kommando. Det finns en kedja av olika objekt som står i linje för att hantera kommandona, och om man inte kan hantera det kan den vidarebefordra det till nästa i kedjan. Ansvarskedjan fortsätter tills en av objekten accepterar kommandot.
Ansvarskedjan måste vara mer flexibel och stödja tillägget av nya handlare i kedjan. Eftersom varje hanterare inte kan utföra varje uppgift måste det finnas en grupp av hanterare som kan arbeta kollektivt. Det kan vara några nackdelar med ansvarskedjan eftersom vissa av kommandona förblir olösta, även i slutet av kedjan. För att lösa problemet är en lösning att implementera alla hanterare för alla möjliga förfrågningar.
Det kan vara några problem relaterade till de trasiga länkar i ansvarssystemets kedja. Om programmeraren glömmer att länka kommandona kan begäran gå vilse. Begäranrepresentationen är betydelsefull eftersom den används i alla komponenter i ansvarskedjan. En annan brist som kan vara i utformningen av ReK är att på grund av vissa problem i betonghanteraren kan vissa förfrågningar hamna helt oadresserade i slutet av kedjan. Men sammantaget är ansvarskedjan ett bra system att implementera om den noggrant har utformats med tanke på alla relaterade aspekter.