background preloader

DESIGN PATTERN

Facebook Twitter

Solid | Le méchant blog. PHP : un exemple simple de design pattern Decorator | La Fabrique de code - Tech blog. Le design pattern Decorator (en français, décorateur) a pour but d’étendre les fonctionnalités d’un objet grâce à l’utilisation de l’héritage. Mon père m’a toujours dit que d’un âne, on ne pouvait pas faire un cheval de course; je vais m’employer à lui donner tort !

Voici un diagramme de classe qui sert de base à notre exemple, je l’ai réalisé avec l’outil ArgoUML sur GNU/LInux Debian : Au sommet de notre diagramme trône fièrement la classe abstraite Equide : elle possède une variable d’instance protégée de type chaîne de caractères qui stocke une description très sommaire de l’équidé ainsi que deux méthodes dont une (donne Description) est abstraite. Voici son code en détail : Ce super-type est dérivé en deux classes concrètes : La méthode courir, signalée abstraite dans la mère est implémentée dans les filles et la valeur par défaut stockée dans la variable d’instance _description est écrasée avec une valeur un peu plus censée lors de la construction de l’objet. Pour utiliser ce code : PHP : un exemple simple du design pattern Template Method | La Fabrique de code - Tech blog. Vous cherchiez un design pattern facile à aborder ? Le design pattern template method est celui qu’il vous faut ! Son principe est très simple : dans une classe, une méthode dite template est composée de sous-méthodes dont on sait que chaque sous-classe l’implémentera à sa manière.

Ces sous-méthodes sont généralement en type d’accès protégé car invoquées uniquement par cette fameuse méthode template; l’extérieur n’a pas à connaître les mystères de votre implémentation (encapsulation, vous dîtes ?). Bien entendu, étant donné que chaque classe fille implémentera ces méthodes comme bon lui semble, il convient de les signifier comme abstraites dans la classe mère…Et comme vous le savez, dès qu’une classe a une méthode abstraite, elle devient forcément abstraite à son tour !

Regardons le code suivant, qui a l’avantage d’être relativement simple : Nous avons trois classes concrètes qui dérivent EtreVivant et concrétisent donc ces méthodes, voilà comment les utiliser : PHP : le design pattern Adaptateur | La Fabrique de code - Tech blog. Pour illustrer notre exemple du design pattern Adaptateur, nous allons cette fois nous prendre pour des inspecteurs du permis de conduire ! Chez AUTO LOAD, nous nous vantons d’obtenir un taux de réussite de 99% à l’examen du permis de conduire et ce sans soudoyer de quelque manière que ce soit nos candidats !

Voyons sans tarder les principales classes qui composent notre exemple. Tout d’abord, la classe InspecteurPermisConduire, qui est notre classe cliente. C’est elle qui va faire usage de nos autres classes. Une instance donnée d’InspecteurPermisConduire prend en composition tout objet se conformant à l’interface ConducteurInterface : tout d’abord, elle l’exige dans son constructeur, c’est à dire qu’aucune instance d’InspecteurPermisConduire ne peut exister sans un objet qui implémente en totalité ConducteurInterface.

Voici justement notre Automobiliste : Notre classe concrète Automobiliste implémente les fonctions imposées par l’interface ConducteurInterface. PHP : le design pattern Observateur | La Fabrique de code - Tech blog. Après avoir vu Adaptateur, Décorateur, Template Method ou Factory, nous allons nous concentrer sur un design pattern comportemental : Observateur. Comme tous les design patterns comportementaux (au sens GoF du terme), Observateur décrit la manière dont des objets interagissent entre eux. Ce design pattern met en jeu deux types d’objets : un sujetdes observateurs Observateur matérialise une relation de type un-à-plusieurs : un objet sujet notifie plusieurs objets observateurs qu’un changement d’état vient de se produire chez lui.

L’objet sujet possède un état interne. Lorsque cet état est altéré, il va notifier ses observateurs de ce changement. Ce mécanisme de notification contribue à maintenir la cohérence des états de chaque côté du « fil » (sujet et observateur). Un observateur attendant avec impatience une notification venue d’un ailleurs lointain. Voyons comment se structure Observateur, dans sa version originelle (GoF) : Quelques points clés de ce modèle : Tu tires ou tu pousses ? PHP : le design pattern Proxy | La Fabrique de code - Tech blog. Proxy, proxy…vous avez sans doute déjà lu ce terme quelque part n’est-ce pas ? (Non, ça n’est pas une enseigne de supermarchés !) Un proxy de cache, un proxy Web, etc. Si oui, alors vous avez déjà sa principale raison d’être en tête : un proxy s’intercale entre vous et…quelque chose ! En programmation, ce quelque chose est un objet « distant »…distant parce qu’il peut se trouver ailleurs sur le réseau mais pas seulement !

Il peut très bien se trouver sur la même machine, dans un autre espace d’adressage. Ce design pattern fait état de relations entre des objets, voilà pourquoi on dit qu’il est structurel ! Si vous êtes familier du framework Symfony et de l’ORM Doctrine, cette notion de proxy ne vous a pas échappée car vous manipulez des proxies en bien des occasions ! Les proxies du président de la République ! Voilà un nouveau terme français pour notre Proxy : mandataire. Personne n’emploie ce terme en réalité, mais il me fait rire ! La belle image qui a servi à mes tests ! Design Patterns | Blog Prestaconcept. Mise en application du Patron Visiteur avec Doctrine2 Il est question de voir comment mettre en application le patron de conception (Design Pattern) Visiteur (Visitor) ceci à travers Doctrine2 et d’expliquer pourquoi ce choix.

Le Visiteur En quelques mots : ce motif de conception permet de faire évoluer … Continuer la lecture Implémenter un observer dans Symfony2 Récemment, j’ai eu à mettre en place mon premier observer dans un projet Symfony2, avec quelques contraintes qui m’ont demandé un peu de réflexion pour savoir comment gérer ça proprement.

Pré-requis Maîtriser la notion d’observer Maîtriser la notion de namespace … Continuer la lecture Design Pattern : l’observer Cet article fait parti d’une suite d’articles expliquant les Design patterns. Parlons design patterns. Il y a quelques années de cela, las d’en entendre parler sans trop comprendre, je me suis renseigné sur le « Qu’est-ce qu’un design pattern ?