mirror of
https://github.com/DesignPatternsPHP/DesignPatternsPHP.git
synced 2025-08-06 23:16:33 +02:00
execute read-the-docs.sh
This commit is contained in:
67
Behavioral/Visitor/index.rst
Normal file
67
Behavioral/Visitor/index.rst
Normal file
@@ -0,0 +1,67 @@
|
||||
Visitor
|
||||
=======
|
||||
|
||||
Purpose
|
||||
-------
|
||||
|
||||
The Visitor Pattern lets you outsource operations on objects to other
|
||||
objects. The main reason to do this is to keep a separation of concerns.
|
||||
But classes have to define a contract to allow visitors (the
|
||||
``Role::accept`` method in the example).
|
||||
|
||||
The contract is an abstract class but you can have also a clean
|
||||
interface. In that case, each Visitor has to choose itself which method
|
||||
to invoke on the visitor.
|
||||
|
||||
UML Diagram
|
||||
-----------
|
||||
|
||||
.. image:: uml/uml.png
|
||||
:alt: Alt Visitor UML Diagram
|
||||
:align: center
|
||||
|
||||
Code
|
||||
----
|
||||
|
||||
You can also find these code on `GitHub`_
|
||||
|
||||
Group.php
|
||||
|
||||
.. literalinclude:: Group.php
|
||||
:language: php
|
||||
:linenos:
|
||||
|
||||
Role.php
|
||||
|
||||
.. literalinclude:: Role.php
|
||||
:language: php
|
||||
:linenos:
|
||||
|
||||
RolePrintVisitor.php
|
||||
|
||||
.. literalinclude:: RolePrintVisitor.php
|
||||
:language: php
|
||||
:linenos:
|
||||
|
||||
User.php
|
||||
|
||||
.. literalinclude:: User.php
|
||||
:language: php
|
||||
:linenos:
|
||||
|
||||
RoleVisitorInterface.php
|
||||
|
||||
.. literalinclude:: RoleVisitorInterface.php
|
||||
:language: php
|
||||
:linenos:
|
||||
|
||||
Test
|
||||
----
|
||||
|
||||
Tests/VisitorTest.php
|
||||
|
||||
.. literalinclude:: Tests/VisitorTest.php
|
||||
:language: php
|
||||
:linenos:
|
||||
|
||||
.. _`GitHub`: https://github.com/domnikl/DesignPatternsPHP/tree/master/Behavioral/Visitor
|
Reference in New Issue
Block a user