As you can see the responsibility is handled by the chain of classes, each executing a single responsibility (following Single Responsibility Principle). Also, the functionality can be extended by further linking up the chain, thereby satisfying the Open-Closed Principle.

Code samples can be found here. Complete list of Patterns and Principles could be found here.