git clone [email protected]:TBoileau/capsule-strategy-pattern.git
composer install
bin/phpunit
Vous regarder le fichier var/coverage/junit.xml
pour vérifier les temps d'exécution.
Nous avons mis en place 3 implémentations du pattern Strategy.
Avantage :
- Très rapide.
Inconvénients :
- Déclarer et enregistrer chaque stratégie dans le contexte.
- Si nos stratégies possèdent des dépendances, on doit toutes les gérer à la main.
Exemple d'utilisation :
- Classe : ImportContext
- Test : ImportTest::testImport
Avantages :
- Relativement rapide.
- Ne nécessite pas de déclarer les stratégies. (Utilisation du
_instanceof
)
Inconvénients :
- Le contexte reçoit une liste de stratégies déjà instanciées.
Exemple d'utilisation :
- Déclaration des services services.yaml
- Classe : ImportTaggedIteratorContext
- Test : ImportTest::testImportWithTaggedIterator
Avantages :
- Ne nécessite pas de déclarer les stratégies. (Utilisation du
_instanceof
) - Instancie la stratégie que lorsqu'elle est demandée.
Inconvénients :
- Moins rapide que les précédents.
Exemple d'utilisation :
- Déclaration des services services.yaml
- Classe : ImportTaggedLocatorContext
- Test : ImportTest::testImportWithTaggedLocator