diff --git a/README.md b/README.md index f1e7b9d..9d54809 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,48 @@ -# design patterns in PHP # +# design patterns in PHP -[![Build Status](https://travis-ci.org/Trismegiste/DesignPatternsPHP.png?branch=master)](https://travis-ci.org/Trismegiste/DesignPatternsPHP) +[![Build Status](https://travis-ci.org/domnikl/DesignPatternsPHP.png?branch=master)](https://travis-ci.org/domnikl/DesignPatternsPHP) -This is a collection of known design patterns and some sample code how to implement them in PHP. Every pattern has a -small list of examples (most of them from Zend Framework or Doctrine2 as I'm most familiar with this software). +This is a collection of known design patterns and some sample code how to implement them in PHP. Every pattern has a small list of examples (most of them from Zend Framework, Symfony2 or Doctrine2 as I'm most familiar with this software). I think the problem with patterns is that often people do know them but don't know when to apply which. -*Please feel free to fork and add your own examples!* +The patterns can be structured in roughly three different categories: + +## Creational + +* (AbstractFactory)[tree/master/AbstractFactory] +* (Builder)[tree/master/Builder] +* (SimpleFactory)[tree/master/SimpleFactory] +* (FactoryMethod)[tree/master/FactoryMethod] +* (StaticFactory)[tree/master/StaticFactory] +* (Prototype)[tree/master/Prototype] +* (Singleton)[tree/master/Singleton] (is considered an anti-pattern! :no_entry:) +* (Multiton)[tree/master/Multiton] (is considered an anti-pattern! :no_entry:) + +## Structural + +* (Adapter)[tree/master/Adapter] +* (Composite)[tree/master/Composite] +* (Decorator)[tree/master/Decorator] +* (Facade)[tree/master/Facade] +* (Proxy)[tree/master/Proxy] +* (Registry)[tree/master/Registry] +* (FluentInterface)[tree/master/FluentInterface] +* (DataMapper)[tree/master/DataMapper] +* (DependencyInjection)[tree/master/DependencyInjection] + +## Behavioral + +* (ChainOfResponsibilities)[tree/master/ChainOfResponsibilities] +* (Command)[tree/master/Command] +* (Iterator)[tree/master/Iterator] +* (Mediator)[tree/master/Mediator] +* (NullObject)[tree/master/NullObject] +* (Observer)[tree/master/Observer] +* (StatusPattern)[tree/master/StatusPattern] +* (Strategy)[tree/master/Strategy] +* (TemplateMethod)[tree/master/TemplateMethod] +* (Visitor)[tree/master/Visitor] + +*Please feel free to fork and extend existing or add your own examples!*