19-07-2009, 12:23 PM
(Modification du message : 19-07-2009, 12:31 PM par Sephi-Chan.)
De ma petite expérience (qui ne s'allongera pas de si tôt puisque Ruby n'inclut pas d'interfaces), ça sert à ajouter des contraintes qui obligent à faire bien les choses.
C'est par exemple utilisé dans certains frameworks qui fournissent des systèmes qui peuvent avoir plusieurs backend pour un système. Imagine par exemple un système de cache pour lequel tu veux des méthodes homogènes : store(), destroy(), get() mais que derrière, tu as plusieurs backend : une classe qui cache à base de fichiers, l'autre qui utilise APC, etc. Il est alors intéressant d'utiliser une interface contenant ces quelques méthodes indispensables, ainsi, tu es certain de la fiabilité de ton système.
Ça pourrait être la même chose avec un système d'internationalisation : tes ressources traduisibles implémentent une interface qui peut utiliser indifféremment getText ou d'autres systèmes.
Je crois me souvenir que Zend Framework utilise ça pour Zend_Cache et probablement pour d'autres composants : je te conseille de jeter un œil au code source, il y a du beau PHP dedans.
Sephi-Chan
C'est par exemple utilisé dans certains frameworks qui fournissent des systèmes qui peuvent avoir plusieurs backend pour un système. Imagine par exemple un système de cache pour lequel tu veux des méthodes homogènes : store(), destroy(), get() mais que derrière, tu as plusieurs backend : une classe qui cache à base de fichiers, l'autre qui utilise APC, etc. Il est alors intéressant d'utiliser une interface contenant ces quelques méthodes indispensables, ainsi, tu es certain de la fiabilité de ton système.
Ça pourrait être la même chose avec un système d'internationalisation : tes ressources traduisibles implémentent une interface qui peut utiliser indifféremment getText ou d'autres systèmes.
Je crois me souvenir que Zend Framework utilise ça pour Zend_Cache et probablement pour d'autres composants : je te conseille de jeter un œil au code source, il y a du beau PHP dedans.
Sephi-Chan