Strategie, Pourquoi ce patron de conception ?

Aujourd’hui, nous verrons pourquoi et comment utiliser le patron de conception Strategie.

upidev-strategie-patron-de-conception

Définition

Strategie : Patron de conception comportementale qui peut sélectionner à la volée des algorithmes au cours de l’exécution selon certaines conditions, comme les stratégies utilisées en temps de guerre.

Strategie : Exemple pratique

Afin d’expliquer ce patron de conception, explorons les stratégies utilisées par William Wallace dans Braveheart pour contrer l’ennemi.

import random


class Strategy:

    def enforce(self):
        pass


class WarLord:

    strategy = None

    def change_strategy(self, strategy):
        self.strategy = strategy

    def apply_strategy(self):
        self.strategy.enforce()


class RaiseSharpenedSticks(Strategy):

    def enforce(self):
        print("Raise sharpened sticks, so that cavalries are skwewered")


class ChargeIntoEnnemies(Strategy):

    def enforce(self):
        print("Charge into ennemies and fight for freedom")


class CallIrishFriends(Strategy):

    def enforce(self):
        print("Call Irish Friends to have more soldier for fighting")


SITUATIONS = {
    "Cavalries attacking": 0,
    "Ennemies charge to Scottish": 1,
    "Ennemies are a twice as much as Scottish": 2
}


def main():

    williamwalace = WarLord()

    situation = random.choice(SITUATIONS.keys())

    if situation == "Cavalries attacking":
        williamwalace.strategy = RaiseSharpenedSticks()
    elif situation == "Ennemies charge to Scottish":
        williamwalace.strategy = ChargeIntoEnnemies()
    elif situation == "Ennemies are a twice as as than Scottish":
        williamwalace.strategy = CallIrishFriends()

    williamwalace.apply_strategy()

main()

Conclusion

Ainsi s’achève ce tutoriel, ajoutez ci-nécessaire vos questions en commentaire.

Laisser un commentaire