Junior — Middle
Can you give an example where the Strategy pattern is used to implement object behavior?
sobes.tech AI
Answer from AI
The Strategy pattern allows changing an object's behavior at runtime by encapsulating algorithms into separate classes and delegating execution to them.
Example: suppose we have a game where a character can move in different ways — walk, run, fly. Instead of multiple conditional statements, we create an interface IMoveStrategy and different implementations:
interface IMoveStrategy {
void Move();
}
class WalkStrategy : IMoveStrategy {
public void Move() {
Console.WriteLine("Character walks");
}
}
class FlyStrategy : IMoveStrategy {
public void Move() {
Console.WriteLine("Character flies");
}
}
class Character {
private IMoveStrategy moveStrategy;
public Character(IMoveStrategy strategy) {
moveStrategy = strategy;
}
public void SetMoveStrategy(IMoveStrategy strategy) {
moveStrategy = strategy;
}
public void Move() {
moveStrategy.Move();
}
}
// Usage
var character = new Character(new WalkStrategy());
character.Move(); // Character walks
character.SetMoveStrategy(new FlyStrategy());
character.Move(); // Character flies
This approach simplifies extending and changing behavior without modifying the character class code.