Junior — Middle
What are the advantages and disadvantages of using the strategy pattern?
sobes.tech AI
Answer from AI
The 'Strategy' pattern allows defining a family of algorithms, encapsulating each one, and making them interchangeable. This facilitates changing the behavior of an object at runtime.
Advantages:
- Simplifies code extension and maintenance by separating algorithms.
- Allows changing algorithms dynamically without modifying the client.
- Avoids many conditional operators, improving readability.
Disadvantages:
- Increases the number of classes and objects, which can complicate the structure.
- Requires proper design of strategy interfaces.
Example in Python:
from abc import ABC, abstractmethod
class Strategy(ABC):
@abstractmethod
def execute(self, data):
pass
class ConcreteStrategyA(Strategy):
def execute(self, data):
return sorted(data)
class ConcreteStrategyB(Strategy):
def execute(self, data):
return sorted(data, reverse=True)
class Context:
def __init__(self, strategy: Strategy):
self._strategy = strategy
def set_strategy(self, strategy: Strategy):
self._strategy = strategy
def do_something(self, data):
return self._strategy.execute(data)
context = Context(ConcreteStrategyA())
print(context.do_something([3,1,2])) # [1, 2, 3]
context.set_strategy(ConcreteStrategyB())
print(context.do_something([3,1,2])) # [3, 2, 1]