Ein schönes Beispiel ist die Gegenüberstellung der BowlingGame-Kata von Uncle Bob und den Überlegungen dazu von Ralf Westphal
Hier erkennt man in der Gegenüberstellung der beiden zentralen Implementierungen der Responsibility, den Score zu ermitteln, die strukturellen Unterschiede ( Java vs. C# mal beiseite geschoben )
Uncle Bob
public int score() { int score = 0; int frameIndex = 0; for (int frame = 0; frame < 10; frame++) { if (isStrike(frameIndex)) { score += 10 + strikeBonus(frameIndex); frameIndex++; } else if (isSpare(frameIndex)) { score += 10 + spareBonus(frameIndex); frameIndex += 2; } else { score += sumOfBallsInFrame(frameIndex); frameIndex += 2; } } return score; }
Ralf Westphal
int Score_frame(Frame frame, int[] rolls) { switch ((Frame.KindsOfFrame)frame.Kind) { case Frame.KindsOfFrame.Strike: case Frame.KindsOfFrame.Spare: return rolls [frame.RollIndex] + rolls [frame.RollIndex + 1] + rolls [frame.RollIndex + 2]; default: return rolls [frame.RollIndex] + rolls [frame.RollIndex + 1]; } }