diff --git a/Behavioral/ChainOfResponsibilities/README.md b/Behavioral/ChainOfResponsibilities/README.md
index 3369cd5..7657e93 100644
--- a/Behavioral/ChainOfResponsibilities/README.md
+++ b/Behavioral/ChainOfResponsibilities/README.md
@@ -10,3 +10,7 @@ To build a chain of objects to handle a call in sequential order. If one object
* 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
* Yii Framework: CFilterChain is a chain of controller action filters. the executing point is passed from one filter to the next along the chain, and only if all filters say "yes", the action can be invoked at last.
+
+## UML Diagram
+
+
diff --git a/Behavioral/ChainOfResponsibilities/uml/ChainOfResponsibilities.uml b/Behavioral/ChainOfResponsibilities/uml/ChainOfResponsibilities.uml
new file mode 100644
index 0000000..3b79650
--- /dev/null
+++ b/Behavioral/ChainOfResponsibilities/uml/ChainOfResponsibilities.uml
@@ -0,0 +1,36 @@
+
+
+ PHP
+ \DesignPatterns\Behavioral\ChainOfResponsibilities\Handler
+
+ \DesignPatterns\Behavioral\ChainOfResponsibilities\Handler
+ \DesignPatterns\Behavioral\ChainOfResponsibilities\Responsible\SlowStorage
+ \DesignPatterns\Behavioral\ChainOfResponsibilities\Responsible\FastStorage
+ \DesignPatterns\Behavioral\ChainOfResponsibilities\Request
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Behavioral/ChainOfResponsibilities/uml/uml.png b/Behavioral/ChainOfResponsibilities/uml/uml.png
new file mode 100644
index 0000000..de55fd2
Binary files /dev/null and b/Behavioral/ChainOfResponsibilities/uml/uml.png differ
diff --git a/Behavioral/ChainOfResponsibilities/uml/uml.svg b/Behavioral/ChainOfResponsibilities/uml/uml.svg
new file mode 100644
index 0000000..38dd1af
--- /dev/null
+++ b/Behavioral/ChainOfResponsibilities/uml/uml.svg
@@ -0,0 +1,363 @@
+
diff --git a/Behavioral/Command/README.md b/Behavioral/Command/README.md
index 748b84f..adf2de3 100644
--- a/Behavioral/Command/README.md
+++ b/Behavioral/Command/README.md
@@ -15,3 +15,7 @@ Command can also be aggregated to combine more complex commands with minimum cop
* A text editor : all events are Command which can be undone, stacked and saved.
* Symfony2: SF2 Commands that can be run from the CLI are built with just the Command pattern in mind
* big CLI tools use subcommands to distribute various tasks and pack them in "modules", each of these can be implemented with the Command pattern (e.g. vagrant)
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Behavioral/Command/uml/Command.uml b/Behavioral/Command/uml/Command.uml
new file mode 100644
index 0000000..368d5f0
--- /dev/null
+++ b/Behavioral/Command/uml/Command.uml
@@ -0,0 +1,28 @@
+
+
+ PHP
+ \DesignPatterns\Behavioral\Command\HelloCommand
+
+ \DesignPatterns\Behavioral\Command\Invoker
+ \DesignPatterns\Behavioral\Command\HelloCommand
+ \DesignPatterns\Behavioral\Command\Receiver
+ \DesignPatterns\Behavioral\Command\CommandInterface
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Behavioral/Command/uml/uml.png b/Behavioral/Command/uml/uml.png
new file mode 100644
index 0000000..d021750
Binary files /dev/null and b/Behavioral/Command/uml/uml.png differ
diff --git a/Behavioral/Command/uml/uml.svg b/Behavioral/Command/uml/uml.svg
new file mode 100644
index 0000000..94e72d0
--- /dev/null
+++ b/Behavioral/Command/uml/uml.svg
@@ -0,0 +1,366 @@
+
diff --git a/Behavioral/Iterator/README.md b/Behavioral/Iterator/README.md
index d364490..46e96b8 100644
--- a/Behavioral/Iterator/README.md
+++ b/Behavioral/Iterator/README.md
@@ -11,3 +11,7 @@ To make an object iterable and to make it appear like a collection of objects.
## Note
Standard PHP Library (SPL) defines an interface Iterator which is best suited for this! Often you would want to implement the Countable interface too, to allow `count($object)` on your iterable object
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Behavioral/Iterator/uml/Iterator.uml b/Behavioral/Iterator/uml/Iterator.uml
new file mode 100644
index 0000000..752fc1b
--- /dev/null
+++ b/Behavioral/Iterator/uml/Iterator.uml
@@ -0,0 +1,28 @@
+
+
+ PHP
+ \DesignPatterns\Behavioral\Iterator\Book
+
+ \DesignPatterns\Behavioral\Iterator\BookListReverseIterator
+ \DesignPatterns\Behavioral\Iterator\BookList
+ \DesignPatterns\Behavioral\Iterator\BookListIterator
+ \DesignPatterns\Behavioral\Iterator\Book
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Behavioral/Iterator/uml/uml.png b/Behavioral/Iterator/uml/uml.png
new file mode 100644
index 0000000..6022630
Binary files /dev/null and b/Behavioral/Iterator/uml/uml.png differ
diff --git a/Behavioral/Iterator/uml/uml.svg b/Behavioral/Iterator/uml/uml.svg
new file mode 100644
index 0000000..d72d5b8
--- /dev/null
+++ b/Behavioral/Iterator/uml/uml.svg
@@ -0,0 +1,638 @@
+
diff --git a/Behavioral/Mediator/README.md b/Behavioral/Mediator/README.md
index 5376000..818ff4c 100644
--- a/Behavioral/Mediator/README.md
+++ b/Behavioral/Mediator/README.md
@@ -9,3 +9,7 @@ like a controller (but not in the sense of the MVC).
All components (called Colleague) are only coupled to the MediatorInterface and
it is a good thing because in OOP, one good friend is better than many. This
is the key-feature of this pattern.
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Behavioral/Mediator/uml/Mediator.uml b/Behavioral/Mediator/uml/Mediator.uml
new file mode 100644
index 0000000..19df84e
--- /dev/null
+++ b/Behavioral/Mediator/uml/Mediator.uml
@@ -0,0 +1,46 @@
+
+
+ PHP
+ \DesignPatterns\Behavioral\Mediator\Colleague
+
+ \DesignPatterns\Behavioral\Mediator\Subsystem\Database
+ \DesignPatterns\Behavioral\Mediator\MediatorInterface
+ \DesignPatterns\Behavioral\Mediator\Subsystem\Client
+ \DesignPatterns\Behavioral\Mediator\Mediator
+ \DesignPatterns\Behavioral\Mediator\Subsystem\Server
+ \DesignPatterns\Behavioral\Mediator\Colleague
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Behavioral/Mediator/uml/uml.png b/Behavioral/Mediator/uml/uml.png
new file mode 100644
index 0000000..04efc46
Binary files /dev/null and b/Behavioral/Mediator/uml/uml.png differ
diff --git a/Behavioral/Mediator/uml/uml.svg b/Behavioral/Mediator/uml/uml.svg
new file mode 100644
index 0000000..6934436
--- /dev/null
+++ b/Behavioral/Mediator/uml/uml.svg
@@ -0,0 +1,651 @@
+
diff --git a/Behavioral/Memento/README.md b/Behavioral/Memento/README.md
index 83ca2c0..4e3294e 100644
--- a/Behavioral/Memento/README.md
+++ b/Behavioral/Memento/README.md
@@ -16,3 +16,7 @@ When using this pattern, care should be taken if the originator may change other
* The seed of a pseudorandom number generator
* The state in a finite state machine
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Behavioral/Memento/uml/Momento.uml b/Behavioral/Memento/uml/Momento.uml
new file mode 100644
index 0000000..c72667e
--- /dev/null
+++ b/Behavioral/Memento/uml/Momento.uml
@@ -0,0 +1,22 @@
+
+
+ PHP
+ \DesignPatterns\Behavioral\Memento\Caretaker
+
+ \DesignPatterns\Behavioral\Memento\Caretaker
+ \DesignPatterns\Behavioral\Memento\Originator
+ \DesignPatterns\Behavioral\Memento\Memento
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Behavioral/Memento/uml/uml.png b/Behavioral/Memento/uml/uml.png
new file mode 100644
index 0000000..e96ea69
Binary files /dev/null and b/Behavioral/Memento/uml/uml.png differ
diff --git a/Behavioral/Memento/uml/uml.svg b/Behavioral/Memento/uml/uml.svg
new file mode 100644
index 0000000..2cc47a8
--- /dev/null
+++ b/Behavioral/Memento/uml/uml.svg
@@ -0,0 +1,310 @@
+
diff --git a/Behavioral/NullObject/README.md b/Behavioral/NullObject/README.md
index 1e18d25..68f2bd0 100644
--- a/Behavioral/NullObject/README.md
+++ b/Behavioral/NullObject/README.md
@@ -18,3 +18,7 @@ a statement like `if (!is_null($obj)) { $obj->callSomething(); }` anymore.
* Symfony2: null output in Symfony/Console
* null handler in a Chain of Responsibilities pattern
* null command in a Command pattern
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Behavioral/NullObject/uml/NullObject.uml b/Behavioral/NullObject/uml/NullObject.uml
new file mode 100644
index 0000000..257c915
--- /dev/null
+++ b/Behavioral/NullObject/uml/NullObject.uml
@@ -0,0 +1,36 @@
+
+
+ PHP
+ \DesignPatterns\Behavioral\NullObject\Service
+
+ \DesignPatterns\Behavioral\NullObject\NullLogger
+ \DesignPatterns\Behavioral\NullObject\PrintLogger
+ \DesignPatterns\Behavioral\NullObject\LoggerInterface
+ \DesignPatterns\Behavioral\NullObject\Service
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Behavioral/NullObject/uml/uml.png b/Behavioral/NullObject/uml/uml.png
new file mode 100644
index 0000000..9a081be
Binary files /dev/null and b/Behavioral/NullObject/uml/uml.png differ
diff --git a/Behavioral/NullObject/uml/uml.svg b/Behavioral/NullObject/uml/uml.svg
new file mode 100644
index 0000000..12273b4
--- /dev/null
+++ b/Behavioral/NullObject/uml/uml.svg
@@ -0,0 +1,304 @@
+
diff --git a/Behavioral/Observer/README.md b/Behavioral/Observer/README.md
index c59a584..ccaeaca 100644
--- a/Behavioral/Observer/README.md
+++ b/Behavioral/Observer/README.md
@@ -11,4 +11,8 @@ To implement a publish/subscribe behaviour to an object, whenever a "Subject" ob
## Note
-PHP already defines two interfaces that can help to implement this pattern: SplObserver and SplSubject.
\ No newline at end of file
+PHP already defines two interfaces that can help to implement this pattern: SplObserver and SplSubject.
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Behavioral/Observer/uml/Observer.uml b/Behavioral/Observer/uml/Observer.uml
new file mode 100644
index 0000000..0e5ddef
--- /dev/null
+++ b/Behavioral/Observer/uml/Observer.uml
@@ -0,0 +1,27 @@
+
+
+ PHP
+ \DesignPatterns\Behavioral\Observer\User
+
+ \DesignPatterns\Behavioral\Observer\UserObserver
+ \DesignPatterns\Behavioral\Observer\User
+ \SplSubject
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Behavioral/Observer/uml/uml.png b/Behavioral/Observer/uml/uml.png
new file mode 100644
index 0000000..0300bd4
Binary files /dev/null and b/Behavioral/Observer/uml/uml.png differ
diff --git a/Behavioral/Observer/uml/uml.svg b/Behavioral/Observer/uml/uml.svg
new file mode 100644
index 0000000..09c79c1
--- /dev/null
+++ b/Behavioral/Observer/uml/uml.svg
@@ -0,0 +1,310 @@
+
diff --git a/Behavioral/Specification/README.md b/Behavioral/Specification/README.md
index 39f0827..1f55b3b 100644
--- a/Behavioral/Specification/README.md
+++ b/Behavioral/Specification/README.md
@@ -5,3 +5,6 @@
Builds a clear specification of business rules, where objects can be checked against. The composite specification class has
one method called `isSatisfiedBy` that returns either true or false depending on whether the given object satisfies the specification.
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Behavioral/Specification/uml/Specification.uml b/Behavioral/Specification/uml/Specification.uml
new file mode 100644
index 0000000..003e549
--- /dev/null
+++ b/Behavioral/Specification/uml/Specification.uml
@@ -0,0 +1,55 @@
+
+
+ PHP
+ \DesignPatterns\Behavioral\Specification\AbstractSpecification
+
+ \DesignPatterns\Behavioral\Specification\PriceSpecification
+ \DesignPatterns\Behavioral\Specification\Not
+ \DesignPatterns\Behavioral\Specification\SpecificationInterface
+ \DesignPatterns\Behavioral\Specification\Plus
+ \DesignPatterns\Behavioral\Specification\AbstractSpecification
+ \DesignPatterns\Behavioral\Specification\Either
+ \DesignPatterns\Behavioral\Specification\Item
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Behavioral/Specification/uml/uml.png b/Behavioral/Specification/uml/uml.png
new file mode 100644
index 0000000..0b31e49
Binary files /dev/null and b/Behavioral/Specification/uml/uml.png differ
diff --git a/Behavioral/Specification/uml/uml.svg b/Behavioral/Specification/uml/uml.svg
new file mode 100644
index 0000000..cfab544
--- /dev/null
+++ b/Behavioral/Specification/uml/uml.svg
@@ -0,0 +1,761 @@
+
diff --git a/Behavioral/State/README.md b/Behavioral/State/README.md
index 7c4263f..71aff0f 100644
--- a/Behavioral/State/README.md
+++ b/Behavioral/State/README.md
@@ -3,3 +3,7 @@
## Purpose
Encapsulate varying behavior for the same routine based on an object's state. This can be a cleaner way for an object to change its behavior at runtime without resorting to large monolithic conditional statements.
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Behavioral/State/uml/State.uml b/Behavioral/State/uml/State.uml
new file mode 100644
index 0000000..6b825dd
--- /dev/null
+++ b/Behavioral/State/uml/State.uml
@@ -0,0 +1,37 @@
+
+
+ PHP
+ \DesignPatterns\Behavioral\State\OrderInterface
+
+ \DesignPatterns\Behavioral\State\OrderFactory
+ \DesignPatterns\Behavioral\State\CreateOrder
+ \DesignPatterns\Behavioral\State\OrderController
+ \DesignPatterns\Behavioral\State\OrderInterface
+ \DesignPatterns\Behavioral\State\ShippingOrder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Behavioral/State/uml/uml.png b/Behavioral/State/uml/uml.png
new file mode 100644
index 0000000..847a4e4
Binary files /dev/null and b/Behavioral/State/uml/uml.png differ
diff --git a/Behavioral/State/uml/uml.svg b/Behavioral/State/uml/uml.svg
new file mode 100644
index 0000000..2b97e07
--- /dev/null
+++ b/Behavioral/State/uml/uml.svg
@@ -0,0 +1,460 @@
+
diff --git a/Behavioral/Strategy/README.md b/Behavioral/Strategy/README.md
index 88f43dd..9813487 100644
--- a/Behavioral/Strategy/README.md
+++ b/Behavioral/Strategy/README.md
@@ -14,3 +14,7 @@ To separate strategies and to enable fast switching between them. Also this patt
* sorting a list of objects, one strategy by date, the other by id
* simplify unit testing: e.g. switching between file and in-memory storage
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Behavioral/Strategy/uml/Strategy.uml b/Behavioral/Strategy/uml/Strategy.uml
new file mode 100644
index 0000000..7c2838a
--- /dev/null
+++ b/Behavioral/Strategy/uml/Strategy.uml
@@ -0,0 +1,36 @@
+
+
+ PHP
+ \DesignPatterns\Behavioral\Strategy\ComparatorInterface
+
+ \DesignPatterns\Behavioral\Strategy\ObjectCollection
+ \DesignPatterns\Behavioral\Strategy\DateComparator
+ \DesignPatterns\Behavioral\Strategy\ComparatorInterface
+ \DesignPatterns\Behavioral\Strategy\IdComparator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Behavioral/Strategy/uml/uml.png b/Behavioral/Strategy/uml/uml.png
new file mode 100644
index 0000000..269e496
Binary files /dev/null and b/Behavioral/Strategy/uml/uml.png differ
diff --git a/Behavioral/Strategy/uml/uml.svg b/Behavioral/Strategy/uml/uml.svg
new file mode 100644
index 0000000..b441390
--- /dev/null
+++ b/Behavioral/Strategy/uml/uml.svg
@@ -0,0 +1,314 @@
+
diff --git a/Behavioral/TemplateMethod/README.md b/Behavioral/TemplateMethod/README.md
index ce435d2..c01c00c 100644
--- a/Behavioral/TemplateMethod/README.md
+++ b/Behavioral/TemplateMethod/README.md
@@ -12,3 +12,7 @@ How? With abstraction of course.
In other words, this is a skeleton of algorithm, well-suited for framework libraries. The user has just to implement one method and the superclass do the job.
It is an easy way to decouple concrete classes and reduce copy-paste, that's why you'll find it everywhere.
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Behavioral/TemplateMethod/uml/TemplateMethod.uml b/Behavioral/TemplateMethod/uml/TemplateMethod.uml
new file mode 100644
index 0000000..063b022
--- /dev/null
+++ b/Behavioral/TemplateMethod/uml/TemplateMethod.uml
@@ -0,0 +1,35 @@
+
+
+ PHP
+ \DesignPatterns\Behavioral\TemplateMethod\BeachJourney
+
+ \DesignPatterns\Behavioral\TemplateMethod\CityJourney
+ \DesignPatterns\Behavioral\TemplateMethod\Journey
+ \DesignPatterns\Behavioral\TemplateMethod\BeachJourney
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Behavioral/TemplateMethod/uml/uml.png b/Behavioral/TemplateMethod/uml/uml.png
new file mode 100644
index 0000000..c557e8f
Binary files /dev/null and b/Behavioral/TemplateMethod/uml/uml.png differ
diff --git a/Behavioral/TemplateMethod/uml/uml.svg b/Behavioral/TemplateMethod/uml/uml.svg
new file mode 100644
index 0000000..d06adcb
--- /dev/null
+++ b/Behavioral/TemplateMethod/uml/uml.svg
@@ -0,0 +1,256 @@
+
diff --git a/Behavioral/Visitor/README.md b/Behavioral/Visitor/README.md
index 1ad8cc0..3db1d9c 100644
--- a/Behavioral/Visitor/README.md
+++ b/Behavioral/Visitor/README.md
@@ -6,3 +6,7 @@ The Visitor Pattern lets you outsource operations on objects to other objects. T
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
+
+
\ No newline at end of file
diff --git a/Behavioral/Visitor/uml/Visitor.uml b/Behavioral/Visitor/uml/Visitor.uml
new file mode 100644
index 0000000..cb03bd5
--- /dev/null
+++ b/Behavioral/Visitor/uml/Visitor.uml
@@ -0,0 +1,41 @@
+
+
+ PHP
+ \DesignPatterns\Behavioral\Visitor\Group
+
+ \DesignPatterns\Behavioral\Visitor\Role
+ \DesignPatterns\Behavioral\Visitor\RolePrintVisitor
+ \DesignPatterns\Behavioral\Visitor\Group
+ \DesignPatterns\Behavioral\Visitor\RoleVisitorInterface
+ \DesignPatterns\Behavioral\Visitor\User
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Behavioral/Visitor/uml/uml.png b/Behavioral/Visitor/uml/uml.png
new file mode 100644
index 0000000..e2e59c0
Binary files /dev/null and b/Behavioral/Visitor/uml/uml.png differ
diff --git a/Behavioral/Visitor/uml/uml.svg b/Behavioral/Visitor/uml/uml.svg
new file mode 100644
index 0000000..b2a6945
--- /dev/null
+++ b/Behavioral/Visitor/uml/uml.svg
@@ -0,0 +1,441 @@
+
diff --git a/Creational/AbstractFactory/README.md b/Creational/AbstractFactory/README.md
index aa084fc..34d457d 100644
--- a/Creational/AbstractFactory/README.md
+++ b/Creational/AbstractFactory/README.md
@@ -4,3 +4,7 @@
To create series of related or dependent objects without specifying their concrete classes.
Usually the created classes all implement the same interface. The client of the abstract factory does not care about how these objects are created, he just knows how they go together.
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Creational/AbstractFactory/uml/AbstractFactory.uml b/Creational/AbstractFactory/uml/AbstractFactory.uml
new file mode 100644
index 0000000..a44e64c
--- /dev/null
+++ b/Creational/AbstractFactory/uml/AbstractFactory.uml
@@ -0,0 +1,38 @@
+
+
+ PHP
+ \DesignPatterns\Creational\AbstractFactory\AbstractFactory
+
+ \DesignPatterns\Creational\AbstractFactory\Html\Text
+ \DesignPatterns\Creational\AbstractFactory\Html\Picture
+ \DesignPatterns\Creational\AbstractFactory\HtmlFactory
+ \DesignPatterns\Creational\AbstractFactory\JsonFactory
+ \DesignPatterns\Creational\AbstractFactory\AbstractFactory
+ \DesignPatterns\Creational\AbstractFactory\MediaInterface
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Creational/AbstractFactory/uml/uml.png b/Creational/AbstractFactory/uml/uml.png
new file mode 100644
index 0000000..6de2767
Binary files /dev/null and b/Creational/AbstractFactory/uml/uml.png differ
diff --git a/Creational/AbstractFactory/uml/uml.svg b/Creational/AbstractFactory/uml/uml.svg
new file mode 100644
index 0000000..17b4b70
--- /dev/null
+++ b/Creational/AbstractFactory/uml/uml.svg
@@ -0,0 +1,379 @@
+
diff --git a/Creational/Builder/README.md b/Creational/Builder/README.md
index 3a85f51..573816a 100644
--- a/Creational/Builder/README.md
+++ b/Creational/Builder/README.md
@@ -13,3 +13,7 @@ Note: Builders have often a fluent interface, see the mock builder of PHPUnit fo
## Examples
* PHPUnit: Mock Builder
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Creational/Builder/uml/Builder.uml b/Creational/Builder/uml/Builder.uml
new file mode 100644
index 0000000..1921c7a
--- /dev/null
+++ b/Creational/Builder/uml/Builder.uml
@@ -0,0 +1,54 @@
+
+
+ PHP
+ \DesignPatterns\Creational\Builder\BikeBuilder
+
+ \DesignPatterns\Creational\Builder\Parts\Door
+ \DesignPatterns\Creational\Builder\Parts\Engine
+ \DesignPatterns\Creational\Builder\CarBuilder
+ \DesignPatterns\Creational\Builder\Parts\Wheel
+ \DesignPatterns\Creational\Builder\Parts\Bike
+ \DesignPatterns\Creational\Builder\Parts\Car
+ \DesignPatterns\Creational\Builder\BikeBuilder
+ \DesignPatterns\Creational\Builder\BuilderInterface
+ \DesignPatterns\Creational\Builder\Parts\Vehicle
+ \DesignPatterns\Creational\Builder\Director
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Creational/Builder/uml/uml.png b/Creational/Builder/uml/uml.png
new file mode 100644
index 0000000..3a990dd
Binary files /dev/null and b/Creational/Builder/uml/uml.png differ
diff --git a/Creational/Builder/uml/uml.svg b/Creational/Builder/uml/uml.svg
new file mode 100644
index 0000000..59fb923
--- /dev/null
+++ b/Creational/Builder/uml/uml.svg
@@ -0,0 +1,832 @@
+
diff --git a/Creational/FactoryMethod/README.md b/Creational/FactoryMethod/README.md
index 10af7fd..ae4cfb6 100644
--- a/Creational/FactoryMethod/README.md
+++ b/Creational/FactoryMethod/README.md
@@ -9,3 +9,7 @@ For simple case, this abstract class could be just an interface
This pattern is a "real" Design Pattern because it achieves the "Dependency Inversion Principle" a.k.a the "D" in S.O.L.I.D principles.
It means the FactoryMethod class depends on abstractions, not concrete classes. This is the real trick compared to SimpleFactory or StaticFactory.
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Creational/FactoryMethod/uml/FactoryMethod.uml b/Creational/FactoryMethod/uml/FactoryMethod.uml
new file mode 100644
index 0000000..ec4249c
--- /dev/null
+++ b/Creational/FactoryMethod/uml/FactoryMethod.uml
@@ -0,0 +1,55 @@
+
+
+ PHP
+ \DesignPatterns\Creational\FactoryMethod\Bicycle
+
+ \DesignPatterns\Creational\FactoryMethod\FactoryMethod
+ \DesignPatterns\Creational\FactoryMethod\Bicycle
+ \DesignPatterns\Creational\FactoryMethod\GermanFactory
+ \DesignPatterns\Creational\FactoryMethod\VehicleInterface
+ \DesignPatterns\Creational\FactoryMethod\ItalianFactory
+ \DesignPatterns\Creational\FactoryMethod\Ferrari
+ \DesignPatterns\Creational\FactoryMethod\Porsche
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Creational/FactoryMethod/uml/uml.png b/Creational/FactoryMethod/uml/uml.png
new file mode 100644
index 0000000..0687038
Binary files /dev/null and b/Creational/FactoryMethod/uml/uml.png differ
diff --git a/Creational/FactoryMethod/uml/uml.svg b/Creational/FactoryMethod/uml/uml.svg
new file mode 100644
index 0000000..62b8cc6
--- /dev/null
+++ b/Creational/FactoryMethod/uml/uml.svg
@@ -0,0 +1,623 @@
+
diff --git a/Creational/Multiton/README.md b/Creational/Multiton/README.md
index 938de9c..26c9a38 100644
--- a/Creational/Multiton/README.md
+++ b/Creational/Multiton/README.md
@@ -10,3 +10,7 @@ To have only a list of named instances that are used, like a singleton but with
* 2 DB Connectors, e.g. one for MySQL, the other for SQLite
* multiple Loggers (one for debug messages, one for errors)
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Creational/Multiton/uml/Multiton.uml b/Creational/Multiton/uml/Multiton.uml
new file mode 100644
index 0000000..7fbe4db
--- /dev/null
+++ b/Creational/Multiton/uml/Multiton.uml
@@ -0,0 +1,20 @@
+
+
+ PHP
+ \DesignPatterns\Creational\Multiton\Multiton
+
+ \DesignPatterns\Creational\Multiton\Multiton
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Creational/Multiton/uml/uml.png b/Creational/Multiton/uml/uml.png
new file mode 100644
index 0000000..df5f721
Binary files /dev/null and b/Creational/Multiton/uml/uml.png differ
diff --git a/Creational/Multiton/uml/uml.svg b/Creational/Multiton/uml/uml.svg
new file mode 100644
index 0000000..fe459ab
--- /dev/null
+++ b/Creational/Multiton/uml/uml.svg
@@ -0,0 +1,197 @@
+
diff --git a/Creational/Pool/README.md b/Creational/Pool/README.md
index a39c3b2..7229a5a 100644
--- a/Creational/Pool/README.md
+++ b/Creational/Pool/README.md
@@ -6,3 +6,7 @@ The **object pool pattern** is a software creational design pattern that uses a
Object pooling can offer a significant performance boost in situations where the cost of initializing a class instance is high, the rate of instantiation of a class is high, and the number of instances in use at any one time is low. The pooled object is obtained in predictable time when creation of the new objects (especially over network) may take variable time.
However these benefits are mostly true for objects that are expensive with respect to time, such as database connections, socket connections, threads and large graphic objects like fonts or bitmaps. In certain situations, simple object pooling (that hold no external resources, but only occupy memory) may not be efficient and could decrease performance.
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Creational/Pool/uml/Pool.uml b/Creational/Pool/uml/Pool.uml
new file mode 100644
index 0000000..5a770de
--- /dev/null
+++ b/Creational/Pool/uml/Pool.uml
@@ -0,0 +1,22 @@
+
+
+ PHP
+ \DesignPatterns\Creational\Pool\Processor
+
+ \DesignPatterns\Creational\Pool\Pool
+ \DesignPatterns\Creational\Pool\Processor
+ \DesignPatterns\Creational\Pool\Worker
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Creational/Pool/uml/uml.png b/Creational/Pool/uml/uml.png
new file mode 100644
index 0000000..4bcb05c
Binary files /dev/null and b/Creational/Pool/uml/uml.png differ
diff --git a/Creational/Pool/uml/uml.svg b/Creational/Pool/uml/uml.svg
new file mode 100644
index 0000000..4ddd1b4
--- /dev/null
+++ b/Creational/Pool/uml/uml.svg
@@ -0,0 +1,467 @@
+
diff --git a/Creational/Prototype/README.md b/Creational/Prototype/README.md
index 5ac8ca5..6244e8a 100644
--- a/Creational/Prototype/README.md
+++ b/Creational/Prototype/README.md
@@ -7,3 +7,7 @@ To avoid the cost of creating objects the standard way (new Foo()) and instead c
## Examples
* Large amounts of data (e.g. create 1,000,000 rows in a database at once via a ORM).
+
+## UML Diagram
+
+
diff --git a/Creational/Prototype/uml/Prototype.uml b/Creational/Prototype/uml/Prototype.uml
new file mode 100644
index 0000000..2712fba
--- /dev/null
+++ b/Creational/Prototype/uml/Prototype.uml
@@ -0,0 +1,35 @@
+
+
+ PHP
+ \DesignPatterns\Creational\Prototype\BarBookPrototype
+
+ \DesignPatterns\Creational\Prototype\BookPrototype
+ \DesignPatterns\Creational\Prototype\FooBookPrototype
+ \DesignPatterns\Creational\Prototype\BarBookPrototype
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Creational/Prototype/uml/uml.png b/Creational/Prototype/uml/uml.png
new file mode 100644
index 0000000..23a3b91
Binary files /dev/null and b/Creational/Prototype/uml/uml.png differ
diff --git a/Creational/Prototype/uml/uml.svg b/Creational/Prototype/uml/uml.svg
new file mode 100644
index 0000000..34844a0
--- /dev/null
+++ b/Creational/Prototype/uml/uml.svg
@@ -0,0 +1,305 @@
+
diff --git a/Creational/SimpleFactory/README.md b/Creational/SimpleFactory/README.md
index c165dc5..fedaa9d 100644
--- a/Creational/SimpleFactory/README.md
+++ b/Creational/SimpleFactory/README.md
@@ -7,3 +7,7 @@ ConcreteFactory is a simple factory pattern.
It differs from the static factory because it is NOT static and as you know: static => global => evil!
Therefore, you can have multiple factories, differently parametrized, you can subclass it and you can mock-up it.
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Creational/SimpleFactory/uml/SimpleFactory.uml b/Creational/SimpleFactory/uml/SimpleFactory.uml
new file mode 100644
index 0000000..f51ce6c
--- /dev/null
+++ b/Creational/SimpleFactory/uml/SimpleFactory.uml
@@ -0,0 +1,36 @@
+
+
+ PHP
+ \DesignPatterns\Creational\SimpleFactory\ConcreteFactory
+
+ \DesignPatterns\Creational\SimpleFactory\Scooter
+ \DesignPatterns\Creational\SimpleFactory\ConcreteFactory
+ \DesignPatterns\Creational\SimpleFactory\VehicleInterface
+ \DesignPatterns\Creational\SimpleFactory\Bicycle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Creational/SimpleFactory/uml/uml.png b/Creational/SimpleFactory/uml/uml.png
new file mode 100644
index 0000000..d22c00a
Binary files /dev/null and b/Creational/SimpleFactory/uml/uml.png differ
diff --git a/Creational/SimpleFactory/uml/uml.svg b/Creational/SimpleFactory/uml/uml.svg
new file mode 100644
index 0000000..7c966c2
--- /dev/null
+++ b/Creational/SimpleFactory/uml/uml.svg
@@ -0,0 +1,286 @@
+
diff --git a/Creational/Singleton/README.md b/Creational/Singleton/README.md
index e85703a..b90fcdc 100644
--- a/Creational/Singleton/README.md
+++ b/Creational/Singleton/README.md
@@ -12,6 +12,6 @@ To have only one instance of this object in the application that will handle all
* Logger (may also be a Multiton if there are many log files for several purposes)
* Lock file for the application (there is only one in the filesystem ...)
-## Diagram
+## UML Diagram
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/Creational/Singleton/uml/Singleton.uml b/Creational/Singleton/uml/Singleton.uml
new file mode 100644
index 0000000..c56949e
--- /dev/null
+++ b/Creational/Singleton/uml/Singleton.uml
@@ -0,0 +1,20 @@
+
+
+ PHP
+ \DesignPatterns\Creational\Singleton\Singleton
+
+ \DesignPatterns\Creational\Singleton\Singleton
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Creational/Singleton/uml/uml.png b/Creational/Singleton/uml/uml.png
new file mode 100644
index 0000000..c9a2f19
Binary files /dev/null and b/Creational/Singleton/uml/uml.png differ
diff --git a/Creational/Singleton/uml/uml.svg b/Creational/Singleton/uml/uml.svg
new file mode 100644
index 0000000..f8e69cf
--- /dev/null
+++ b/Creational/Singleton/uml/uml.svg
@@ -0,0 +1,162 @@
+
diff --git a/Creational/StaticFactory/README.md b/Creational/StaticFactory/README.md
index 6c22bc5..f5e2710 100644
--- a/Creational/StaticFactory/README.md
+++ b/Creational/StaticFactory/README.md
@@ -9,3 +9,7 @@ method to create all types of objects it can create. It is usually named `factor
## Examples
* Zend Framework: `Zend_Cache_Backend` or `_Frontend` use a factory method create cache backends or frontends
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Creational/StaticFactory/uml/StaticFactory.uml b/Creational/StaticFactory/uml/StaticFactory.uml
new file mode 100644
index 0000000..4137d4d
--- /dev/null
+++ b/Creational/StaticFactory/uml/StaticFactory.uml
@@ -0,0 +1,36 @@
+
+
+ PHP
+ \DesignPatterns\Creational\StaticFactory\FormatNumber
+
+ \DesignPatterns\Creational\StaticFactory\FormatNumber
+ \DesignPatterns\Creational\StaticFactory\StaticFactory
+ \DesignPatterns\Creational\StaticFactory\FormatString
+ \DesignPatterns\Creational\StaticFactory\FormatterInterface
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Creational/StaticFactory/uml/uml.png b/Creational/StaticFactory/uml/uml.png
new file mode 100644
index 0000000..f1b6688
Binary files /dev/null and b/Creational/StaticFactory/uml/uml.png differ
diff --git a/Creational/StaticFactory/uml/uml.svg b/Creational/StaticFactory/uml/uml.svg
new file mode 100644
index 0000000..e57a79b
--- /dev/null
+++ b/Creational/StaticFactory/uml/uml.svg
@@ -0,0 +1,207 @@
+
diff --git a/More/Delegation/README.md b/More/Delegation/README.md
new file mode 100644
index 0000000..c51128c
--- /dev/null
+++ b/More/Delegation/README.md
@@ -0,0 +1,13 @@
+# Delegation
+
+## Purpose
+
+...
+
+## Examples
+
+...
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/More/Delegation/uml/Delegation.uml b/More/Delegation/uml/Delegation.uml
new file mode 100644
index 0000000..ffb8e68
--- /dev/null
+++ b/More/Delegation/uml/Delegation.uml
@@ -0,0 +1,21 @@
+
+
+ PHP
+ \DesignPatterns\More\Delegation\JuniorDeveloper
+
+ \DesignPatterns\More\Delegation\JuniorDeveloper
+ \DesignPatterns\More\Delegation\TeamLead
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/More/Delegation/uml/uml.png b/More/Delegation/uml/uml.png
new file mode 100644
index 0000000..f673da2
Binary files /dev/null and b/More/Delegation/uml/uml.png differ
diff --git a/More/Delegation/uml/uml.svg b/More/Delegation/uml/uml.svg
new file mode 100644
index 0000000..ff49d10
--- /dev/null
+++ b/More/Delegation/uml/uml.svg
@@ -0,0 +1,196 @@
+
diff --git a/More/Repository/README.md b/More/Repository/README.md
index 1c2216f..0e2b188 100644
--- a/More/Repository/README.md
+++ b/More/Repository/README.md
@@ -10,3 +10,7 @@ Repository also supports the objective of achieving a clean separation and one-w
* Doctrine 2 ORM: there is Repository that mediates between Entity and DBAL and contains methods to retrieve objects
* Laravel Framework
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/More/Repository/uml/Repository.uml b/More/Repository/uml/Repository.uml
new file mode 100644
index 0000000..e18cfd7
--- /dev/null
+++ b/More/Repository/uml/Repository.uml
@@ -0,0 +1,28 @@
+
+
+ PHP
+ \DesignPatterns\Repository\PostRepository
+
+ \DesignPatterns\Repository\Storage
+ \DesignPatterns\Repository\MemoryStorage
+ \DesignPatterns\Repository\Post
+ \DesignPatterns\Repository\PostRepository
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/More/Repository/uml/uml.png b/More/Repository/uml/uml.png
new file mode 100644
index 0000000..d22ede8
Binary files /dev/null and b/More/Repository/uml/uml.png differ
diff --git a/More/Repository/uml/uml.svg b/More/Repository/uml/uml.svg
new file mode 100644
index 0000000..8b9987c
--- /dev/null
+++ b/More/Repository/uml/uml.svg
@@ -0,0 +1,687 @@
+
diff --git a/More/ServiceLocator/README.md b/More/ServiceLocator/README.md
index 199b8cf..cdee496 100644
--- a/More/ServiceLocator/README.md
+++ b/More/ServiceLocator/README.md
@@ -14,3 +14,7 @@ Service Locator object on bootstrap.
## Examples
* Zend Framework 2 uses Service Locator to create and share services used in the framework(i.e. EventManager, ModuleManager, all custom user services provided by modules, etc...)
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/More/ServiceLocator/uml/ServiceLocator.uml b/More/ServiceLocator/uml/ServiceLocator.uml
new file mode 100644
index 0000000..2bfcfb3
--- /dev/null
+++ b/More/ServiceLocator/uml/ServiceLocator.uml
@@ -0,0 +1,38 @@
+
+
+ PHP
+ \DesignPatterns\More\ServiceLocator\DatabaseServiceInterface
+
+ \DesignPatterns\More\ServiceLocator\DatabaseServiceInterface
+ \DesignPatterns\More\ServiceLocator\LogService
+ \DesignPatterns\More\ServiceLocator\ServiceLocator
+ \DesignPatterns\More\ServiceLocator\ServiceLocatorInterface
+ \DesignPatterns\More\ServiceLocator\LogServiceInterface
+ \DesignPatterns\More\ServiceLocator\DatabaseService
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/More/ServiceLocator/uml/uml.png b/More/ServiceLocator/uml/uml.png
new file mode 100644
index 0000000..1136eaa
Binary files /dev/null and b/More/ServiceLocator/uml/uml.png differ
diff --git a/More/ServiceLocator/uml/uml.svg b/More/ServiceLocator/uml/uml.svg
new file mode 100644
index 0000000..9ee2d3e
--- /dev/null
+++ b/More/ServiceLocator/uml/uml.svg
@@ -0,0 +1,432 @@
+
diff --git a/Structural/Adapter/README.md b/Structural/Adapter/README.md
index 5d77709..d2390df 100644
--- a/Structural/Adapter/README.md
+++ b/Structural/Adapter/README.md
@@ -8,3 +8,7 @@ To translate one interface for a class into a compatible interface. An adapter a
* DB Client libraries adapter
* using multiple different webservices and adapters normalize data so that the outcome is the same for all
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Structural/Adapter/uml/Adapter.uml b/Structural/Adapter/uml/Adapter.uml
new file mode 100644
index 0000000..dec7779
--- /dev/null
+++ b/Structural/Adapter/uml/Adapter.uml
@@ -0,0 +1,41 @@
+
+
+ PHP
+ \DesignPatterns\Structural\Adapter\Book
+
+ \DesignPatterns\Structural\Adapter\EBookAdapter
+ \DesignPatterns\Structural\Adapter\Book
+ \DesignPatterns\Structural\Adapter\Kindle
+ \DesignPatterns\Structural\Adapter\EBookInterface
+ \DesignPatterns\Structural\Adapter\PaperBookInterface
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Structural/Adapter/uml/uml.png b/Structural/Adapter/uml/uml.png
new file mode 100644
index 0000000..2cf82a1
Binary files /dev/null and b/Structural/Adapter/uml/uml.png differ
diff --git a/Structural/Adapter/uml/uml.svg b/Structural/Adapter/uml/uml.svg
new file mode 100644
index 0000000..4eec346
--- /dev/null
+++ b/Structural/Adapter/uml/uml.svg
@@ -0,0 +1,448 @@
+
diff --git a/Structural/Bridge/README.md b/Structural/Bridge/README.md
index 6ddc67e..b4bf4fd 100644
--- a/Structural/Bridge/README.md
+++ b/Structural/Bridge/README.md
@@ -7,3 +7,6 @@ independently. (http://en.wikipedia.org/wiki/Bridge_pattern)
* [Symfony DoctrineBridge](https://github.com/symfony/DoctrineBridge)
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Structural/Bridge/uml/Bridge.uml b/Structural/Bridge/uml/Bridge.uml
new file mode 100644
index 0000000..13fa058
--- /dev/null
+++ b/Structural/Bridge/uml/Bridge.uml
@@ -0,0 +1,50 @@
+
+
+ PHP
+ \DesignPatterns\Structural\Bridge\Vehicle
+
+ \DesignPatterns\Structural\Bridge\Workshop
+ \DesignPatterns\Structural\Bridge\Car
+ \DesignPatterns\Structural\Bridge\Produce
+ \DesignPatterns\Structural\Bridge\Motorcycle
+ \DesignPatterns\Structural\Bridge\Assemble
+ \DesignPatterns\Structural\Bridge\Vehicle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Structural/Bridge/uml/uml.png b/Structural/Bridge/uml/uml.png
new file mode 100644
index 0000000..df6ce3c
Binary files /dev/null and b/Structural/Bridge/uml/uml.png differ
diff --git a/Structural/Bridge/uml/uml.svg b/Structural/Bridge/uml/uml.svg
new file mode 100644
index 0000000..189a7dc
--- /dev/null
+++ b/Structural/Bridge/uml/uml.svg
@@ -0,0 +1,451 @@
+
diff --git a/Structural/Composite/README.md b/Structural/Composite/README.md
index ae22908..f0ca01c 100755
--- a/Structural/Composite/README.md
+++ b/Structural/Composite/README.md
@@ -2,7 +2,7 @@
# Purpose
-To treat a group of objects the same way as a single instance of the object.
+To treat a group of objects the same way as a single instance of the object.
# Examples
@@ -10,3 +10,6 @@ To treat a group of objects the same way as a single instance of the object.
subsequently runs through all its child elements and calls `render()` on them
* `Zend_Config`: a tree of configuration options, each one is a `Zend_Config` object itself
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Structural/Composite/uml/Composite.uml b/Structural/Composite/uml/Composite.uml
new file mode 100644
index 0000000..326dfd3
--- /dev/null
+++ b/Structural/Composite/uml/Composite.uml
@@ -0,0 +1,42 @@
+
+
+ PHP
+ \DesignPatterns\Structural\Composite\InputElement
+
+ \DesignPatterns\Structural\Composite\TextElement
+ \DesignPatterns\Structural\Composite\FormElement
+ \DesignPatterns\Structural\Composite\InputElement
+ \DesignPatterns\Structural\Composite\Form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \DesignPatterns\Structural\Composite\InputElement
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Structural/Composite/uml/uml.png b/Structural/Composite/uml/uml.png
new file mode 100644
index 0000000..5fed73d
Binary files /dev/null and b/Structural/Composite/uml/uml.png differ
diff --git a/Structural/Composite/uml/uml.svg b/Structural/Composite/uml/uml.svg
new file mode 100644
index 0000000..c587818
--- /dev/null
+++ b/Structural/Composite/uml/uml.svg
@@ -0,0 +1,284 @@
+
diff --git a/Structural/Composite/uml/uml.txt b/Structural/Composite/uml/uml.txt
new file mode 100644
index 0000000..933d4b2
--- /dev/null
+++ b/Structural/Composite/uml/uml.txt
@@ -0,0 +1,23 @@
+@startuml
+class Form {
+ #elements : array|FormElement[]
+ +render($indent = 0 : int)
+ +addElement(FormElement $element)
+}
+
+abstract class FormElement {
+ +render($indent = 0 : int)
+}
+
+class InputElement {
+ +render($indent = 0 : int)
+}
+
+class TextElement {
+ +render($indent = 0 : int)
+}
+
+FormElement <|.. TextElement
+FormElement <|.. InputElement
+FormElement <|.. Form
+@enduml
\ No newline at end of file
diff --git a/Structural/DataMapper/README.md b/Structural/DataMapper/README.md
index 61245de..70efe20 100644
--- a/Structural/DataMapper/README.md
+++ b/Structural/DataMapper/README.md
@@ -16,3 +16,7 @@ The key point of this pattern is, unlike Active Record pattern, the data model f
## Examples
* DB Object Relational Mapper (ORM) : Doctrine2 uses DAO named as "EntityRepository"
+
+## UML Diagram
+
+
diff --git a/Structural/DataMapper/uml/DataMapper.uml b/Structural/DataMapper/uml/DataMapper.uml
new file mode 100644
index 0000000..697e1f9
--- /dev/null
+++ b/Structural/DataMapper/uml/DataMapper.uml
@@ -0,0 +1,23 @@
+
+
+ PHP
+ \DesignPatterns\Structural\DataMapper\User
+
+ \DesignPatterns\Structural\DataMapper\User
+ \DesignPatterns\Structural\DataMapper\UserMapper
+
+
+
+
+
+ \DesignPatterns\Structural\DataMapper\User
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Structural/DataMapper/uml/uml.png b/Structural/DataMapper/uml/uml.png
new file mode 100644
index 0000000..97cd26a
Binary files /dev/null and b/Structural/DataMapper/uml/uml.png differ
diff --git a/Structural/DataMapper/uml/uml.svg b/Structural/DataMapper/uml/uml.svg
new file mode 100644
index 0000000..d65a9c9
--- /dev/null
+++ b/Structural/DataMapper/uml/uml.svg
@@ -0,0 +1,403 @@
+
diff --git a/Structural/Decorator/README.md b/Structural/Decorator/README.md
index 52305ab..4eedd89 100644
--- a/Structural/Decorator/README.md
+++ b/Structural/Decorator/README.md
@@ -8,3 +8,7 @@ To dynamically add new functionality to class instances.
* Zend Framework: decorators for `Zend_Form_Element` instances
* Web Service Layer: Decorators JSON and XML for a REST service (in this case, only one of these should be allowed of course)
+
+## UML Diagram
+
+
diff --git a/Structural/Decorator/uml/Decorator.uml b/Structural/Decorator/uml/Decorator.uml
new file mode 100644
index 0000000..0a80f98
--- /dev/null
+++ b/Structural/Decorator/uml/Decorator.uml
@@ -0,0 +1,51 @@
+
+
+ PHP
+ \DesignPatterns\Structural\Decorator\RenderInXml
+
+ \DesignPatterns\Structural\Decorator\RenderInJson
+ \DesignPatterns\Structural\Decorator\RenderInXml
+ \DesignPatterns\Structural\Decorator\Webservice
+ \DesignPatterns\Structural\Decorator\Decorator
+ \DesignPatterns\Structural\Decorator\RendererInterface
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \DesignPatterns\Structural\Decorator\RenderInXml
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Structural/Decorator/uml/uml.png b/Structural/Decorator/uml/uml.png
new file mode 100644
index 0000000..dc4fae3
Binary files /dev/null and b/Structural/Decorator/uml/uml.png differ
diff --git a/Structural/Decorator/uml/uml.svg b/Structural/Decorator/uml/uml.svg
new file mode 100644
index 0000000..a488e8e
--- /dev/null
+++ b/Structural/Decorator/uml/uml.svg
@@ -0,0 +1,380 @@
+
diff --git a/Structural/DependencyInjection/README.md b/Structural/DependencyInjection/README.md
index 5c8b453..185a550 100644
--- a/Structural/DependencyInjection/README.md
+++ b/Structural/DependencyInjection/README.md
@@ -14,3 +14,7 @@ Notice we are following Inversion of control principle in `Connection` by asking
* The Doctrine2 ORM uses dependency injection e.g. for configuration that is injected into a `Connection` object. For testing purposes, one can easily create a mock object of the configuration and inject that into the `Connection` object
* Symfony and Zend Framework 2 already have containers for DI that create objects via a configuration array and inject them where needed (i.e. in Controllers)
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Structural/DependencyInjection/uml/DependencyInjection.uml b/Structural/DependencyInjection/uml/DependencyInjection.uml
new file mode 100644
index 0000000..e058b19
--- /dev/null
+++ b/Structural/DependencyInjection/uml/DependencyInjection.uml
@@ -0,0 +1,38 @@
+
+
+ PHP
+ \DesignPatterns\Structural\DependencyInjection\AbstractConfig
+
+ \DesignPatterns\Structural\DependencyInjection\Connection
+ \DesignPatterns\Structural\DependencyInjection\ArrayConfig
+ \DesignPatterns\Structural\DependencyInjection\Parameters
+ \DesignPatterns\Structural\DependencyInjection\AbstractConfig
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ \DesignPatterns\Structural\DependencyInjection\AbstractConfig
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Structural/DependencyInjection/uml/uml.png b/Structural/DependencyInjection/uml/uml.png
new file mode 100644
index 0000000..67e6ca1
Binary files /dev/null and b/Structural/DependencyInjection/uml/uml.png differ
diff --git a/Structural/DependencyInjection/uml/uml.svg b/Structural/DependencyInjection/uml/uml.svg
new file mode 100644
index 0000000..78d603d
--- /dev/null
+++ b/Structural/DependencyInjection/uml/uml.svg
@@ -0,0 +1,425 @@
+
diff --git a/Structural/Facade/README.md b/Structural/Facade/README.md
index b7e9156..4a9019c 100644
--- a/Structural/Facade/README.md
+++ b/Structural/Facade/README.md
@@ -15,3 +15,7 @@ That's why a good facade has no `new` in it. If there are multiple creations for
The best facade has no `new` and a constructor with interface-type-hinted parameters.
If you need creation of new instances, use a Factory as argument.
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Structural/Facade/uml/Facade.uml b/Structural/Facade/uml/Facade.uml
new file mode 100644
index 0000000..d6bdd03
--- /dev/null
+++ b/Structural/Facade/uml/Facade.uml
@@ -0,0 +1,24 @@
+
+
+ PHP
+ \DesignPatterns\Structural\Facade\BiosInterface
+
+ \DesignPatterns\Structural\Facade\BiosInterface
+ \DesignPatterns\Structural\Facade\OsInterface
+ \DesignPatterns\Structural\Facade\Facade
+
+
+
+
+
+ \DesignPatterns\Structural\Facade\BiosInterface
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Structural/Facade/uml/uml.png b/Structural/Facade/uml/uml.png
new file mode 100644
index 0000000..da5097a
Binary files /dev/null and b/Structural/Facade/uml/uml.png differ
diff --git a/Structural/Facade/uml/uml.svg b/Structural/Facade/uml/uml.svg
new file mode 100644
index 0000000..2e7b400
--- /dev/null
+++ b/Structural/Facade/uml/uml.svg
@@ -0,0 +1,324 @@
+
diff --git a/Structural/FluentInterface/README.md b/Structural/FluentInterface/README.md
index 7b605a4..2ed92d3 100644
--- a/Structural/FluentInterface/README.md
+++ b/Structural/FluentInterface/README.md
@@ -9,3 +9,7 @@ To write code that is easy readable just like sentences in a natural language (l
* Doctrine2's QueryBuilder works something like that example class below
* PHPUnit uses fluent interfaces to build mock objects
* Yii Framework: CDbCommand and CActiveRecord use this pattern, too
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Structural/FluentInterface/uml/FluentInterface.uml b/Structural/FluentInterface/uml/FluentInterface.uml
new file mode 100644
index 0000000..8fca787
--- /dev/null
+++ b/Structural/FluentInterface/uml/FluentInterface.uml
@@ -0,0 +1,22 @@
+
+
+ PHP
+ \DesignPatterns\Structural\FluentInterface\Sql
+
+ \DesignPatterns\Structural\FluentInterface\Sql
+
+
+
+
+
+ \DesignPatterns\Structural\FluentInterface\Sql
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Structural/FluentInterface/uml/uml.png b/Structural/FluentInterface/uml/uml.png
new file mode 100644
index 0000000..e49aa57
Binary files /dev/null and b/Structural/FluentInterface/uml/uml.png differ
diff --git a/Structural/FluentInterface/uml/uml.svg b/Structural/FluentInterface/uml/uml.svg
new file mode 100644
index 0000000..60a8564
--- /dev/null
+++ b/Structural/FluentInterface/uml/uml.svg
@@ -0,0 +1,191 @@
+
diff --git a/Structural/Proxy/README.md b/Structural/Proxy/README.md
index 3ee37ef..b4c0e39 100644
--- a/Structural/Proxy/README.md
+++ b/Structural/Proxy/README.md
@@ -7,3 +7,7 @@ To interface to anything that is expensive or impossible to duplicate.
## Examples
* Doctrine2 uses proxies to implement framework magic (e.g. lazy initialization) in them, while the user still works with his own entity classes and will never use nor touch the proxies
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Structural/Proxy/uml/Proxy.uml b/Structural/Proxy/uml/Proxy.uml
new file mode 100644
index 0000000..9b407e1
--- /dev/null
+++ b/Structural/Proxy/uml/Proxy.uml
@@ -0,0 +1,28 @@
+
+
+ PHP
+ \DesignPatterns\Structural\Proxy\Record
+
+ \DesignPatterns\Structural\Proxy\Record
+ \DesignPatterns\Structural\Proxy\RecordProxy
+
+
+
+
+
+
+
+
+
+
+ \DesignPatterns\Structural\Proxy\Record
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Structural/Proxy/uml/uml.png b/Structural/Proxy/uml/uml.png
new file mode 100644
index 0000000..82f548a
Binary files /dev/null and b/Structural/Proxy/uml/uml.png differ
diff --git a/Structural/Proxy/uml/uml.svg b/Structural/Proxy/uml/uml.svg
new file mode 100644
index 0000000..1ec1d46
--- /dev/null
+++ b/Structural/Proxy/uml/uml.svg
@@ -0,0 +1,281 @@
+
diff --git a/Structural/Registry/README.md b/Structural/Registry/README.md
index 39a2661..840d2cf 100644
--- a/Structural/Registry/README.md
+++ b/Structural/Registry/README.md
@@ -9,3 +9,7 @@ an abstract class with only static methods (or using the Singleton pattern)
* Zend Framework: `Zend_Registry` holds the application's logger object, front controller etc.
* Yii Framework: `CWebApplication` holds all the application components, such as `CWebUser`, `CUrlManager`, etc.
+
+## UML Diagram
+
+
\ No newline at end of file
diff --git a/Structural/Registry/uml/Registry.uml b/Structural/Registry/uml/Registry.uml
new file mode 100644
index 0000000..564dbc9
--- /dev/null
+++ b/Structural/Registry/uml/Registry.uml
@@ -0,0 +1,22 @@
+
+
+ PHP
+ \DesignPatterns\Structural\Registry\Registry
+
+ \DesignPatterns\Structural\Registry\Registry
+
+
+
+
+
+ \DesignPatterns\Structural\Registry\Registry
+
+
+ Fields
+ Constants
+ Constructors
+ Methods
+
+ private
+
+
diff --git a/Structural/Registry/uml/uml.png b/Structural/Registry/uml/uml.png
new file mode 100644
index 0000000..9f92dcb
Binary files /dev/null and b/Structural/Registry/uml/uml.png differ
diff --git a/Structural/Registry/uml/uml.svg b/Structural/Registry/uml/uml.svg
new file mode 100644
index 0000000..7daccac
--- /dev/null
+++ b/Structural/Registry/uml/uml.svg
@@ -0,0 +1,152 @@
+