Skip to content

Latest commit

 

History

History
60 lines (42 loc) · 1.25 KB

File metadata and controls

60 lines (42 loc) · 1.25 KB

Purpose

To build a chain of objects to handle a call in sequential order. If one object cannot handle a call, it delegates the call to the next in the chain and so forth.

Examples

  • logging framework, where each chain element decides autonomously what to do with a log message
  • a Spam filter
  • Caching: first object is an instance of e.g. a Memcached Interface, if that "misses" it delegates the call to the database interface

UML Diagram

Alt ChainOfResponsibility UML Diagram

Code

You can also find this code on GitHub

Handler.php

.. literalinclude:: Handler.php
   :language: php
   :linenos:

Responsible/FastStorage.php

.. literalinclude:: Responsible/HttpInMemoryCacheHandler.php
   :language: php
   :linenos:

Responsible/SlowStorage.php

.. literalinclude:: Responsible/SlowDatabaseHandler.php
   :language: php
   :linenos:

Test

Tests/ChainTest.php

.. literalinclude:: Tests/ChainTest.php
   :language: php
   :linenos: