• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Design Patterns
 

Design Patterns

on

  • 1,807 views

Découvrir les design patterns avec PHP

Découvrir les design patterns avec PHP

Statistics

Views

Total Views
1,807
Views on SlideShare
1,797
Embed Views
10

Actions

Likes
1
Downloads
27
Comments
0

1 Embed 10

http://www.linkedin.com 10

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Design Patterns Design Patterns Presentation Transcript

    • DESIGN PATTERNS Mehdi Mehni [email_address]
    • 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é.
    • Pourquoi les étudier  ?
      • Catalogue de solutions.
      • Bénéficier du savoir-faire d'experts  dans des contextes éprouvés. 
      • Faciliter la conception. 
    • Pourquoi les utiliser ?
      • Ne pas réinventer la roue.
      • Faciliter la communication entre  les développeurs.
      • Pour résoudre un problème
    • 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)
    • 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 solution
      • possible pour la classe en question.
    • Singleton
      • class 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');
        • }
      • }
    • Factory
      • Problématique :  Obtenir facilement un objet prêt à l'emploi et qui  correspond à nos besoins.
      • Solution :  Une classe / Une méthode qui encapsule la logique de création des objets en question.
    • Factory
      • class 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é');
          • }
        • }
      • }
    • 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
    • Proxy
      • class 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();