11

Click here to load reader

Design Patterns

Embed Size (px)

DESCRIPTION

Découvrir les design patterns avec PHP

Citation preview

Page 1: Design Patterns

DESIGN PATTERNS

Mehdi [email protected]

Page 2: Design Patterns

Qu'est-ce que les design patterns ?

Les designs patterns existent depuis bien plus longtemps que les systèmes d'informations. Ils ont été notamment utilisés dans le batiment depuis les années 70.

Un design pattern, traduit en français par motif de conception ou patron de conception est un terme de génie logiciel qui désigne une solution standard d'architecture logicielle correspondant à un problème donné.

Page 3: Design Patterns

Pourquoi les étudier  ?

Catalogue de solutions. Bénéficier du savoir-faire d'experts 

dans des contextes éprouvés.  Faciliter la conception. 

Page 4: Design Patterns

Pourquoi les utiliser ?

Ne pas réinventer la roue. Faciliter la communication entre 

les développeurs. Pour résoudre un problème

Page 5: Design Patterns

Les différents types

GoF (Gang of Four)Erich Gamma, Richard Helm, Ralph

Johnson et John Vlissides (SmallTalk Best Pratice Patterns )

Patterns de création : (Factory, AbstractFactory, Builder, Prototype, Singleton)

Patterns de structure :( Adaptator, Bridge, Composite, Decorator, Interface, Flyweight, Proxy)

Patterns comportementaux: (Interpretor, Template method, Chain of responsability, Command, Iterator, Mediator, Memento, Observator, State, Strategy, Visitor)

Page 6: Design Patterns

Singleton

Problématique : S'assurer qu'il existeune seule instance d'un objet donné pour toute l'application.

Solution : Une méthode statique pour contrôler l'instanciation. Rendre ce processus d'instanciation l'unique solutionpossible pour la classe en question.

Page 7: Design Patterns

Singletonclass Singleton{

private static $_instance = null;public static function getInstance(){

if (is_null(self :: $_instance)) {self :: $_instance = new Singleton();

}return self :: $_instance;

}public function __clone(){

throw new Exception('vous ne pouvez cloner un objet singleton');

}}

Page 8: Design Patterns

Factory

Problématique : Obtenir facilementun objet prêt à l'emploi et qui correspond à nos besoins.

Solution : Une classe / Une méthodequi encapsule la logique de créationdes objets en question.

Page 9: Design Patterns

Factoryclass Factory{

public static function getDb($type){

if (include_once 'Drivers/' . $type . '.php') {$classname = $type;

return new $classname;

throw new Exception ('Driver non trouvé');} else {

throw new Exception ('Driver non trouvé');}

}}

Page 10: Design Patterns

Proxy

Problématique : Exécuter des opérations, avant ou après l’appel d’une méthode d’un objet

Solution : Encapsuler votre objet dans un autre objet qui réalisera ces opérations

Page 11: Design Patterns

Proxyclass MyClass{ 

        public function run()          {             echo ”Traitement”;         }  

}

class ProxyMyClass { 

private $_ myClass  = null;           public function __construct() 

        {             $this->_myClass = new MyClass();         } public function run()         {            echo”Avant”;             $this->_ myClass >run();           echo”Apres”;        } 

}

$obj = new  ProxyMyClass(); $obj->run();