Back to Designpatternsphp

`Chain Of Responsibilities`__

Behavioral/ChainOfResponsibilities/README.rst

latest1.3 KB
Original Source

Chain Of Responsibilities__

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

.. image:: uml/uml.png :alt: Alt ChainOfResponsibility UML Diagram :align: center

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:

.. _GitHub: https://github.com/DesignPatternsPHP/DesignPatternsPHP/tree/main/Behavioral/ChainOfResponsibilities .. __: http://en.wikipedia.org/wiki/Chain_of_responsibility_pattern