Your SlideShare is downloading. ×
Design Patterns
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Design Patterns

1,538

Published on

Découvrir les design patterns avec PHP

Découvrir les design patterns avec PHP

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,538
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
32
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. DESIGN PATTERNS Mehdi Mehni [email_address]
  • 2. 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é.
  • 3. Pourquoi les étudier  ?
    • Catalogue de solutions.
    • Bénéficier du savoir-faire d'experts  dans des contextes éprouvés. 
    • Faciliter la conception. 
  • 4. Pourquoi les utiliser ?
    • Ne pas réinventer la roue.
    • Faciliter la communication entre  les développeurs.
    • Pour résoudre un problème
  • 5. 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)
  • 6. 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.
  • 7. 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');
      • }
    • }
  • 8. 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.
  • 9. 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é');
        • }
      • }
    • }
  • 10. 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
  • 11. 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(); 

×