Patron de conception Stratégie

Définition; Exemple; Diagramme UML

Patron de conception Stratégie

Qu'est-ce que le Patron de conception Stratégie ?

  • Définir une famille d’algorithmes interchangeables.

  • Isoler les comportements variables dans des classes séparées.

  • Éviter les structures conditionnelles complexes (if,when, etc.).

  • Suivre le principe Ouvert/Fermé (OCP) : ouvert à l’extension, fermé à la modification.

Patron de conception Stratégie

Problème sans Stratégie

fun calculerTaxe(pays: String, prix: Double): Double {
    return when (pays) {
        "France" -> prix * 0.20
        "Canada" -> prix * 0.15
        else -> 0.0 
    }
}
  • Difficile à maintenir si on ajoute d’autres pays
  • Contrevient au principe Ouvert/Fermé (OCP)
  • Risque de conflits entre développeurs
Patron de conception Stratégie

Exemple en Kotlin – Interface

interface TaxeStrategy {
    fun calculer(prix: Double): Double
}
  • Représente le comportement variable : calcul de taxe.
Patron de conception Stratégie

Implémentations concrètes

class FranceTaxe : TaxStrategy {
    override fun calculer(prix: Double) = prix * 0.20
}

class CanadaTaxe : TaxStrategy {
    override fun calculer(prix: Double) = prix * 0.15
}
  • Chaque stratégie encapsule un algorithme spécifique.
Patron de conception Stratégie

Classe Contexte

class ShoppingCart(private var taxeStrategy: TaxeStrategy) {

    fun calculerTotal(prix: Double): Double {
        return prix + taxeStrategy.calculer(prix)
    }
}
  • Le contexte utilise une stratégie sans connaître les détails de son implémentation.
Patron de conception Stratégie

Diagramme UML

center

Patron de conception Stratégie