Python Design Patterns - Estratégia
O padrão de estratégia é um tipo de padrão de comportamento. O objetivo principal do padrão de estratégia é permitir que o cliente escolha entre diferentes algoritmos ou procedimentos para concluir a tarefa especificada. Algoritmos diferentes podem ser trocados sem complicações para a tarefa mencionada.
Esse padrão pode ser usado para melhorar a flexibilidade quando recursos externos são acessados.
Como implementar o padrão de estratégia?
O programa mostrado abaixo ajuda na implementação do padrão de estratégia.
import types
class StrategyExample:
def __init__(self, func = None):
self.name = 'Strategy Example 0'
if func is not None:
self.execute = types.MethodType(func, self)
def execute(self):
print(self.name)
def execute_replacement1(self):
print(self.name + 'from execute 1')
def execute_replacement2(self):
print(self.name + 'from execute 2')
if __name__ == '__main__':
strat0 = StrategyExample()
strat1 = StrategyExample(execute_replacement1)
strat1.name = 'Strategy Example 1'
strat2 = StrategyExample(execute_replacement2)
strat2.name = 'Strategy Example 2'
strat0.execute()
strat1.execute()
strat2.execute()
Resultado
O programa acima gera a seguinte saída -
Explicação
Ele fornece uma lista de estratégias das funções que executam a saída. O foco principal desse padrão de comportamento é o comportamento.